SQL-запрос, чтобы сделать все данные в столбце UPPER CASE? - PullRequest
63 голосов
/ 13 мая 2009

Мне нужен запрос SQL, чтобы сделать все данные в столбце UPPER CASE?

Есть идеи?

Ответы [ 2 ]

161 голосов
/ 13 мая 2009

Постоянная:

UPDATE
  MyTable
SET
  MyColumn = UPPER(MyColumn)

Временный:

SELECT
  UPPER(MyColumn) AS MyColumn
FROM
  MyTable
12 голосов
/ 17 июля 2014

Если вы хотите обновлять только строки, которые в настоящее время не являются прописными (вместо всех строк), вам необходимо определить разницу, используя 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_<b><i>CI</i></b>_AS → Без учета регистра
  • Latin1_General_<b><i>CS</i></b>_AS → С учетом регистра
...