1

たとえば、ALL CAPITALLETTERWORDとTitlewordを区別する必要があります。

[Column 1]
Kenya
MELBOURNE
Japan
SYDNEY
CANBERRA
WOLLONGONG
United States
United Kingdoms

大文字は都市を意味し、タイトルは国を意味します。

私たちはこれらを区別するために他のコラムを探してきましたが、これは私たちが思いつくことができる感情的なものです。

4

2 に答える 2

5

うわー、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
于 2013-02-26T23:24:57.457 に答える
1

UPPER都市を特定するには、テキストがその値と同じであることを確認します。

select * from table 
where [Column 1] = UPPER([Column 1]) COLLATE Latin1_General_CS_AI

Aaron Bertrandが正しく指摘しているように、これは照合に依存していることに注意してください。

于 2013-02-26T23:21:11.207 に答える