SQLパターン式を1と999の間のすべての数値に一致させたい。
編集:
MSSQLの場合。
SQLで文字クラスにLIKE演算子のパターンマッチングを使用する場合、正規表現のように文字クラスのワイルドカードの繰り返しはありません。つまり、[0-9]+
や[0-9]{1,3}
のようなことはできません(どちらも0
をキャプチャします)
したがって、比較する前に、数値をゼロパッドする必要があります。
これは直接patternではありませんが、このexpressionは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 SQLServerについて話していると仮定しました。
SELECT * FROM table WHERE field BETWEEN 1 AND 999;
編集:これはPostgreSQLでのみ機能します。
文字列に一致する正規表現パターンを探している場合は、次のようになります。
SELECT * FROM table WHERE field ~ '[1-9][0-9]{1,2}';
正規表現パターン に関するドキュメントを確認してください。
SQL Serverは、正規表現as-isをサポートしていません。
次の 回避策 またはこの質問を使用できます: SQL Serverサーバーの正規表現? 。