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 に答える