🐰

SQL Server では正規表現検索ができないので代わりに、、、(?)

2024/01/15に公開

地図パズル製作所の都島です。久しぶりに Zenn を書きました!

今日は SQL Server のちょっとしたテクニックをご紹介したいと思います。

SQL Server は Like 検索はできますが、正規表現を用いた検索はできません。そんなとき、あるカラムが英数字記号のみで構成されているかどうかで検索したい場合、どうしたらいいでしょうか?

ということで考えてみたのですが、一応できそうです!

こんな感じです。

SELECT * FROM TableName
	WHERE LEN(
		REPLACE(
			TRANSLATE(
				ColumnName, 
				'0123456789abcdefghijklmnopqrstuvwxyz',
				'000000000000000000000000000000000000'
			), 
			'0', 
			''
		)
	) = 0

一旦英数字記号を全部 '0' に変換して、それから '0' を全部削除するという方法ですね。
私のなんとなくの思いつきなので、もっといい方法があるかもしれません!

でも、この方法他にも応用が利きそうです。半角英数字だけでなく、なんとなくのメールアドレス検索だってできますし、、、と書いてみたのですが、これくらいしか思いつきませんでした!

ということで今日は SQL Server では正規表現検索が使えないので、代わりの方法を考えてみました。

最後に地図パズル製作所の宣伝をしておきます。

https://chizu-puzzle.com/

Discussion