SQL SQL查询使列中的所有数据大写?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/858528/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
SQL query to make all data in a column UPPER CASE?
提问by MetaGuru
I need a SQL query to make all data in a column UPPER CASE?
我需要一个 SQL 查询来使列中的所有数据大写?
Any ideas?
有任何想法吗?
回答by Tomalak
Permanent:
永恒的:
UPDATE
MyTable
SET
MyColumn = UPPER(MyColumn)
Temporary:
暂时的:
SELECT
UPPER(MyColumn) AS MyColumn
FROM
MyTable
回答by KyleMit
If you want to only update on rows that are not currently uppercase(instead of all rows), you'd need to identify the difference using COLLATE
like this:
如果您只想更新当前不是大写的行(而不是所有行),则需要使用以下方法识别差异COLLATE
:
UPDATE MyTable
SET MyColumn = UPPER(MyColumn)
WHERE MyColumn != UPPER(MyColumn) COLLATE Latin1_General_CS_AS
A Bit About Collation
关于整理的一点
Cases sensitivity is based on your collation settings, and is typically case insensitive by default.
区分大小写基于您的排序规则设置,默认情况下通常不区分大小写。
Collation can be set at the Server, Database, Column, or QueryLevel:
排序规则可以在服务器、数据库、列或查询级别设置:
-- 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 Namesspecify how a string should be encoded and read, for example:
排序规则名称指定应如何编码和读取字符串,例如:
Latin1_General_CI_AS
→ Case InsensitiveLatin1_General_CS_AS
→ Case Sensitive
Latin1_General_CI_AS
→ 不区分大小写Latin1_General_CS_AS
→ 区分大小写