我需要一个SQL查询来将列中的所有数据设为UPPER CASE?
有什么想法吗?
答案 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
→区分大小写