SQL-запрос сделать все данные в столбце ВЕРХНИЙ РЕГИСТР?

83

Мне нужен SQL-запрос, чтобы все данные в столбце ВЕРХНИЙ РЕГИСТР?

Есть идеи?

CloudMeta
источник

Ответы:

193

Постоянный:

UPDATE
  MyTable
SET
  MyColumn = UPPER(MyColumn)

Временный:

SELECT
  UPPER(MyColumn) AS MyColumn
FROM
  MyTable
Томалак
источник
16

Если вы хотите обновить только строки, которые в настоящее время не являются прописными (а не все строки), вам нужно будет определить разницу, используя COLLATEследующее:

UPDATE MyTable
SET    MyColumn = UPPER(MyColumn)
WHERE  MyColumn != UPPER(MyColumn) COLLATE Latin1_General_CS_AS 

Немного о сопоставлении

Чувствительность к регистру зависит от ваших настроек сортировки и обычно по умолчанию нечувствительна к регистру.

Сортировку можно установить на уровне сервера, базы данных, столбца или запроса :

-- Server
SELECT SERVERPROPERTY('COLLATION')
-- Database
SELECT name, collation_name FROM sys.databases
-- Column 
SELECT COLUMN_NAME, COLLATION_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE CHARACTER_SET_NAME IS NOT NULL

Имена сопоставления указывают, как строка должна кодироваться и читаться, например:

  • Latin1_General_CI_AS → Нечувствительность к регистру
  • Latin1_General_CS_AS → С учетом регистра
KyleMit
источник