T-sqlで、特定のセット内の1つ以上の文字を検索できるように、likeステートメントでパターンマッチングを実行する方法はありますか?
具体的には、1つ以上の文字で始まり、1つ以上の数字で終わる文字列を返すLIKEステートメントを考え出そうとしています。
したがって、これらの文字列は一致する必要があります。
そして、これらの文字列は一致してはなりません:
%ワイルドカードを使用して0文字以上の文字列に一致させることができ、brackets []を使用して特定のセット内の1文字に一致させることができます。しかし、それらを組み合わせて、特定のセットの1つ以上の文字に一致させる方法はありますか?
このようなものは素晴らしいでしょうが、もちろん機能しません:
WHERE ColumnName LIKE '[%a-z][%0-9]'
誰かがこの問題の解決策を知っていますか?それとも、SQL Serverでは不可能ですか?
ありがとう、ジム
パターンマッチングが非常に制限されているように、通常の正規表現は使用できません。
詳細については、 ここ を参照してください。
あなたのニーズに使用してください:
WHERE ColumnName LIKE '[a-z]%[0-9]'
これは、任意の文字、その後に何か、その後に数字が続くものと一致します。 SQLは、[]
マッチセットの前後にパターンまたはリテラル文字がないため、文字と数字が文字列の両端にあることを強制します。
Regexを使用してアクセス許可を取得する場合は、ユーザー定義関数を記述して、SQLサーバーの.NETCLR上の正規表現パーサーにアクセスできるようにすることができます。
http://msdn.Microsoft.com/en-us/magazine/cc163473.aspx (SQL 2005以降)