2017-09-07 19 views

答えて

3

あなたは、単に行うことができます。

where left(clientNumber, 1) < 'A' or left(clientNumber, 1) > 'Z' 

か:比較があるため、文字ケースのトリッキーになること、しかし、

where left(clientNumber, 1) not between 'A' and 'Z' 

注意してください。あなたが望むかもしれませんが、1バイト文字と仮定すると:私は、インデックスを使用したい場合は

where ascii(left(clientNumber, 1)) not between ascii('A') and ascii('Z') 

EDITは

where clientNumber < 'A' or clientNumber > 'Z[' 

をしかし、私は、インデックスが本当にあるので、わからないんだけどこの場合には便利です。あなたは好きでは使用することができます

+0

...このようにそれを試してみてくださいあなたが 'A' の間 '上段(左(clientNumber、1))ではないもしかしてと'Z' '、小文字に対応しますか?私はまた、ポータブルなので 'between'ソリューションが好きです(すべてのDBが正規表現をサポートしているわけではありません)。 – Bohemian

+0

関数にClientNumberを置くと、SARGEablie以外のクエリになります。 –

3

SELECT * 
FROM Table 
WHERE ClientNumber NOT LIKE '[A-Za-z]%' 
+0

これは最初の2文字だけをチェックしています。 –

+0

[A-Za-z]に更新されました – meisen99

0

SELECT 
    * 
FROM 
    dbo.MyTable mt 
WHERE 
    mt.ClientNumber LIKE '[^a-Z]%' 
関連する問題