Consulta SQL para hacer todos los datos en una columna EN MAYÚSCULAS?

82

Necesito una consulta SQL para hacer todos los datos en una columna EN MAYÚSCULAS?

¿Algunas ideas?

CloudMeta
fuente

Respuestas:

192

Permanente:

UPDATE
  MyTable
SET
  MyColumn = UPPER(MyColumn)

Temporal:

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

Si solo desea actualizar las filas que actualmente no están en mayúsculas (en lugar de todas las filas), deberá identificar la diferencia usando COLLATEasí:

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

Un poco sobre la colación

La distinción entre mayúsculas y minúsculas se basa en la configuración de clasificación y, por lo general, no distingue entre mayúsculas y minúsculas de forma predeterminada.

La intercalación se puede establecer en el nivel de servidor, base de datos, columna o consulta :

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

Los nombres de intercalación especifican cómo se debe codificar y leer una cadena, por ejemplo:

  • Latin1_General_CI_AS → Insensible a mayúsculas y minúsculas
  • Latin1_General_CS_AS → Sensible a mayúsculas y minúsculas
KyleMit
fuente