SQL-Abfrage, um alle Daten in einer Spalte UPPER CASE zu machen?

80

Ich benötige eine SQL-Abfrage, um alle Daten in einer Spalte UPPER CASE zu erstellen.

Irgendwelche Ideen?

CloudMeta
quelle

Antworten:

189

Dauerhaft:

UPDATE
  MyTable
SET
  MyColumn = UPPER(MyColumn)

Temporär:

SELECT
  UPPER(MyColumn) AS MyColumn
FROM
  MyTable
Tomalak
quelle
16

Wenn Sie nur Zeilen aktualisieren möchten , die derzeit nicht in Großbuchstaben geschrieben sind (anstelle aller Zeilen), müssen Sie den Unterschied folgendermaßen identifizieren COLLATE:

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

Ein bisschen über die Sortierung

Die Fallempfindlichkeit basiert auf Ihren Sortiereinstellungen und unterscheidet normalerweise standardmäßig zwischen Groß- und Kleinschreibung.

Die Sortierung kann auf Server-, Datenbank-, Spalten- oder Abfrageebene festgelegt werden :

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

Kollatierungsnamen geben an, wie eine Zeichenfolge codiert und gelesen werden soll, zum Beispiel:

  • Latin1_General_CI_AS → Groß- und Kleinschreibung wird nicht berücksichtigt
  • Latin1_General_CS_AS → Groß- und Kleinschreibung beachten
KyleMit
quelle