3

「ST」で終わり、その後に 1 ~ 999 の数字が続くものを検索するクエリを実行しています。

SELECT NUMBER WHERE NUMBER LIKE '%ST -- 「ST」で終わるものすべてを返すように正しく動作します

SELECT NUMBER WHERE NUMBER LIKE '%[1-999] -- 正しく動作して、1 ~ 999 で終わるすべてのものを返します

SELECT NUMBER WHERE NUMBER LIKE '%ST[1-999] -- 動作しません - 何も返しません

また試してみました: SELECT NUMBER WHERE NUMBER LIKE '%ST%[1-999]-動作しますが、「ST」と数字の間に余分なものがある「GRASTNT3」なども返します

誰でもこの苦労している初心者を助けることができますか?

ありがとう!

4

2 に答える 2

2

問題は、[1-999] があなたが思っていることを意味しないことです。

SQL Server は、これを一連の値 (1 ~ 9、9、9) として解釈します。これは、基本的に、ST の後に複数の数字がある場合、エントリが返されないことを意味します。

私が知る限り、あなたの最善の策は次のとおりです。

SELECT NUMBER WHERE
    NUMBER LIKE '%ST[1-9][0-9][0-9]' OR 
    NUMBER LIKE '%ST[1-9][0-9]' OR 
    NUMBER LIKE '%ST[1-9]' 

(数値に先行ゼロがない場合 - 先行ゼロがある場合は、先行ゼロをさらにゼロに置き換えます)

于 2013-11-14T17:46:36.307 に答える
0

あなたがする必要があります

SELECT NUMBER WHERE
    NUMBER LIKE '%ST[1-9][0-9][0-9]'
    OR NUMBER LIKE '%ST[1-9][0-9]'
    OR NUMBER LIKE '%ST[1-9]';

のグループは[]ですChar/でNCharはありませんInt


データを正規化して入力すると、STbitint数値の列ができます。

可変文字列データに対して異なるフィルターを定義する必要がある場合は、RDBMS に応じて全文検索または別の Lucene 関連テクノロジーを検討してください。

于 2013-11-14T17:45:06.643 に答える