列内のすべてのデータを大文字にするSQLクエリ?


83

列のすべてのデータを大文字にするにはSQLクエリが必要ですか?

何か案は?

回答:


193

パーマネント:

UPDATE
  MyTable
SET
  MyColumn = UPPER(MyColumn)

一時的:

SELECT
  UPPER(MyColumn) AS MyColumn
FROM
  MyTable

16

(すべての行ではなく)現在大文字ではない行のみを更新する場合は、次の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 →大文字と小文字を区別する
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.