SQL查询使列中的所有数据都是UPPER CASE?

时间:2009-05-13 15:03:21

标签: sql uppercase

我需要一个SQL查询来将列中的所有数据设为UPPER CASE?

有什么想法吗?

2 个答案:

答案 0 :(得分:161)

常驻:

UPDATE
  MyTable
SET
  MyColumn = UPPER(MyColumn)

临时

SELECT
  UPPER(MyColumn) AS MyColumn
FROM
  MyTable

答案 1 :(得分:12)

如果您想仅更新当前不是大写的行(而不是所有行),则需要使用COLLATE来识别差异:

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

关于整理的一点

案例敏感度取决于您的排序规则设置,默认情况下通常不区分大小写。

可以在Server, Database, Column, or Query级别设置整理:

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

Collation Names指定字符串应如何编码和读取,例如:

  • Latin1_General_CI_AS→Case Insensitive
  • Latin1_General_CS_AS→区分大小写