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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-01 02:02:20  来源:igfitidea点击:

SQL query to make all data in a column UPPER CASE?

sqluppercase

提问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 COLLATElike 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 Insensitive
  • Latin1_General_CS_AS→ Case Sensitive
  • Latin1_General_CI_AS→ 不区分大小写
  • Latin1_General_CS_AS→ 区分大小写