web-dev-qa-db-ja.com

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

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

何か案は?

63
MetaGuru

永久:

UPDATE
  MyTable
SET
  MyColumn = UPPER(MyColumn)

一時的:

SELECT
  UPPER(MyColumn) AS MyColumn
FROM
  MyTable
165
Tomalak

(すべての行ではなく)現在大文字ではない行のみを更新する場合を使用して違いを識別する必要があります) 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→大文字と小文字を区別
13
KyleMit