web-dev-qa-db-fra.com

Requête SQL pour créer toutes les données d’une colonne UPPER CASE?

J'ai besoin d'une requête SQL pour créer toutes les données d'une colonne UPPER CASE?

Des idées?

63
MetaGuru

Permanent:

UPDATE
  MyTable
SET
  MyColumn = UPPER(MyColumn)

Temporaire:

SELECT
  UPPER(MyColumn) AS MyColumn
FROM
  MyTable
165
Tomalak

Si vous voulez mettre à jour uniquement les lignes qui ne sont pas actuellement majuscules (au lieu de toutes les lignes), vous devez identifier la différence à l'aide de COLLATE comme ceci:

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

Un peu de collation

La sensibilité à la casse est basée sur vos paramètres de classement et est généralement insensible à la casse par défaut.

Le classement peut être défini à Serveur, Base de données, Colonne ou Requête Niveau:

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

Noms de classement précisez comment une chaîne doit être codée et lue, par exemple:

  • Latin1_General_CI_AS → Insensible à la casse
  • Latin1_General_CS_AS → Sensible à la casse
13
KyleMit