12

1から999までのすべての数字に一致する SQL パターン式が必要です。

編集:

MSSQL で。

4

2 に答える 2

16

文字クラスに対して SQL で LIKE 演算子のパターン マッチングを使用する場合、正規表現にあるような文字クラスのワイルドカードの繰り返しはありません。[0-9]+つまり、 orのようなことはできません[0-9]{1,3}(これらはどちらも をキャプチャし0ます) 。

したがって、比較する前に数値をゼロで埋める必要があります。

これは直接patternではありませんが、このは LIKE 演算子に部分的に依存しており、1 から 999 までの正の整数に対して機能します。

RIGHT('00' + myfield, 3) LIKE '[0-9][0-9][0-9]'
AND RIGHT('00' + myfield, 3) <> '000'
AND LEN(myfield) <= 3

編集:指定しなかったため、Microsoft SQL Serverについて話していると仮定しました。

于 2012-05-13T07:37:02.880 に答える
4
SELECT * FROM table WHERE field BETWEEN 1 AND 999;

編集: これは PostgreSQL でのみ機能します。

文字列に一致する正規表現パターンを探している場合は、次のようになります。

SELECT * FROM table WHERE field ~ '[1-9][0-9]{1,2}';

正規表現パターンに関するドキュメントを確認してください。

SQL Server は正規表現をそのままサポートしていません。
次の回避策またはこの質問を使用できます: SQL Server サーバーの正規表現? .

于 2012-05-13T07:38:32.903 に答える