列のすべてのデータを大文字にするにはSQLクエリが必要ですか?
何か案は?
回答:
(すべての行ではなく)現在大文字ではない行のみを更新する場合は、次の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
→大文字と小文字を区別する