SQL-запрос, чтобы сделать все данные в столбце UPPER CASE?
Мне нужен запрос SQL, чтобы сделать все данные в столбце UPPER CASE?
Есть идеи?
2 ответа
Решение
Постоянный:
UPDATE
MyTable
SET
MyColumn = UPPER(MyColumn)
Временный:
SELECT
UPPER(MyColumn) AS MyColumn
FROM
MyTable
Если вы хотите обновлять только строки, которые в настоящее время не являются прописными (вместо всех строк), вам необходимо определить разницу, используя 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
→ Чувствительный к регистру