90

我需要一个 SQL 查询来使列中的所有数据都大写?

有任何想法吗?

4

2 回答 2

206

永恒的:

UPDATE
  MyTable
SET
  MyColumn = UPPER(MyColumn)

暂时的:

SELECT
  UPPER(MyColumn) AS MyColumn
FROM
  MyTable
于 2009-05-13T15:05:45.237 回答
18

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

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

关于排序规则

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

排序规则可以在服务器、数据库、列或查询级别设置:

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

排序规则名称指定应如何编码和读取字符串,例如:

  • Latin1_General_CI_AS→ 不区分大小写
  • Latin1_General_CS_AS→ 区分大小写
于 2014-07-16T20:14:55.783 回答