0

以下は、1文字の長さの名前のみを返します。
ラテンアルファベット文字、つまりAZ(プラスaz)のみを返すように条件を追加できますか?

SELECT Surname
FROM WHData.dbo.vw_DimUser
WHERE 
    LEN(Surname) =1
    AND <extra condition required>
GROUP BY Surname
4

1 に答える 1

0
SELECT Surname
FROM WHData.dbo.vw_DimUser
WHERE 
    LEN(Surname) = 1
    AND Surname like '[a-Z]'
GROUP BY Surname

ワイルドカード マッチング

以下のコメントの後に編集します。

テストしましょう:

create table t1 (c1 char(1) collate Latin1_General_CS_AS
                 , c2 char(1) collate Latin1_General_CS_AS
                 , wild1 varchar(10) collate Latin1_General_CS_AS
                , wild2 varchar(10) collate Latin1_General_CS_AS)

insert into t1 values ('A', 'a', '[A-z]', '[a-Z]')

select match1 = case when c1 like wild1 then 'Matched' else 'Unmatched' end
  , match2 = case when c1 like wild2 then 'Matched' else 'Unmatched' end
  , match3 = case when c2 like wild1 then 'Matched' else 'Unmatched' end
  , match4 = case when c2 like wild2 then 'Matched' else 'Unmatched' end
from t1

ここに画像の説明を入力

が一致パターンとして使用されている場合にのみ、Aとの両方が正しく一致することがわかります。a[a-Z]

たとえば、SQL Fiddle です

これは、この前の SO question への回答で説明できます。基本的にLatin1_General_CS_AS、SQL サーバーは次のような文字を並べ替えます。

a
A
b
B

ただし、再び質問から盗むために、Books Online は次のように述べています。

In range searches, the characters included in the range may vary depending on the sorting rules of the collation.

したがって、COLLATION にある程度依存していると思います。実際に、これに似たものが展開されている特定の環境でテストした場合です。

于 2013-01-28T17:13:58.250 に答える