【发布时间】:2010-10-25 21:41:41
【问题描述】:
我需要一个 SQL 查询来使列中的所有数据都大写?
有什么想法吗?
【问题讨论】:
我需要一个 SQL 查询来使列中的所有数据都大写?
有什么想法吗?
【问题讨论】:
永久:
UPDATE
MyTable
SET
MyColumn = UPPER(MyColumn)
临时:
SELECT
UPPER(MyColumn) AS MyColumn
FROM
MyTable
【讨论】:
如果您想只更新当前不是大写的行(而不是所有行),您需要使用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_<b><i>CI</i></b>_AS → 不区分大小写Latin1_General_<b><i>CS</i></b>_AS → 区分大小写【讨论】: