web-dev-qa-db-ja.com

[1-999]の間のすべての数値に一致するMSSQLパターン

SQLパターン式を1999の間のすべての数値に一致させたい。

編集:

MSSQLの場合。

9
ARZ

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について話していると仮定しました。

13
richardtallent
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サーバーの正規表現?

4
vyegorov