たとえば、ALL CAPITALLETTERWORDとTitlewordを区別する必要があります。
[Column 1]
Kenya
MELBOURNE
Japan
SYDNEY
CANBERRA
WOLLONGONG
United States
United Kingdoms
大文字は都市を意味し、タイトルは国を意味します。
私たちはこれらを区別するために他のコラムを探してきましたが、これは私たちが思いつくことができる感情的なものです。
たとえば、ALL CAPITALLETTERWORDとTitlewordを区別する必要があります。
[Column 1]
Kenya
MELBOURNE
Japan
SYDNEY
CANBERRA
WOLLONGONG
United States
United Kingdoms
大文字は都市を意味し、タイトルは国を意味します。
私たちはこれらを区別するために他のコラムを探してきましたが、これは私たちが思いつくことができる感情的なものです。
うわー、2 つの異なる種類の事実を区別するなんてひどい方法です。
COLLATE
とにかく、列を大文字と小文字を区別するように変更するか、各比較で句を使用することにより、大文字と小文字を区別する比較を実行できます。
DECLARE @x TABLE(c VARCHAR(255));
INSERT @x VALUES
('Kenya'),
('MELBOURNE'),
('Japan'),
('SYDNEY'),
('CANBERRA'),
('WOLLONGONG'),
('United States'),
('United Kingdom');
SELECT city = CASE
WHEN c = UPPER(c) COLLATE Latin1_General_BIN
THEN c ELSE NULL END,
country = CASE
WHEN c <> UPPER(c) COLLATE Latin1_General_BIN
THEN c ELSE NULL END
FROM @x;
結果:
city country
---------- --------------
NULL Kenya
MELBOURNE NULL
NULL Japan
SYDNEY NULL
CANBERRA NULL
WOLLONGONG NULL
NULL United States
NULL United Kingdom
UPPER
都市を特定するには、テキストがその値と同じであることを確認します。
select * from table
where [Column 1] = UPPER([Column 1]) COLLATE Latin1_General_CS_AI
Aaron Bertrandが正しく指摘しているように、これは照合に依存していることに注意してください。