Zapytanie SQL, aby wszystkie dane były w kolumnie WIELKIE LITERY?

83

Potrzebuję zapytania SQL, aby wszystkie dane były w kolumnie WIELKIE LITERY?

Jakieś pomysły?

CloudMeta
źródło

Odpowiedzi:

193

Stały:

UPDATE
  MyTable
SET
  MyColumn = UPPER(MyColumn)

Chwilowy:

SELECT
  UPPER(MyColumn) AS MyColumn
FROM
  MyTable
Tomalak
źródło
16

Jeśli chcesz aktualizować tylko wiersze, które nie są obecnie pisane wielkimi literami (zamiast wszystkich wierszy), musisz zidentyfikować różnicę, używając w COLLATEten sposób:

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

Trochę o sortowaniu

Czułość wielkości liter jest oparta na ustawieniach sortowania i zazwyczaj domyślnie nie rozróżnia wielkości liter.

Sortowanie można ustawić na poziomie serwera, bazy danych, kolumny lub zapytania :

-- 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

Nazwy sortowania określają, w jaki sposób ciąg powinien być kodowany i odczytywany, na przykład:

  • Latin1_General_CI_AS → Bez rozróżniania wielkości liter
  • Latin1_General_CS_AS → Rozróżniana wielkość liter
KyleMit
źródło