web-dev-qa-db-ja.com

SQL Serverの数値のワイルドカード

SQL Server 'LIKE'で数値を照合する方法。

SpaceName
------------ 
| New_Space_1
| .
| .
| New_Space_8 
| New_Space_9
| New_Space_10
| New_Space_11
| New_Space_SomeString
| New_Space_SomeString1

上記は私のテーブルの内容です。数字で終わるレコードのみを取得したい、つまりNew_Space_1からNew_Space_11までのレコードが欲しい。

New_Space_SomeStringNew_Space_SomeString1は不要

このようなクエリがあります。

SELECT SpaceName FROM SpaceTable
    WHERE SpaceName LIKE 'New_Space_%' 

しかし、これはすべてのレコードを返します。

15
Sreekumar P

@SteveKassのこのソリューションは完璧に機能します。

SELECT SpaceName FROM SpaceTable WHERE SpaceName LIKE 'New[_]Space[_]%' AND SpaceName NOT LIKE 'New[_]Space[_]%[^0-9]%' 
8
Sreekumar P

どうですか

SELECT SpaceName FROM SpaceTable
    WHERE SpaceName LIKE 'New[_]Space[_][0-9]%' 

アンダースコアを角かっこで囲んだ理由は、正規表現では_が任意の1文字を意味するためです。このように読んでください http://msdn.Microsoft.com/en-us/library/ms179859.aspx

17
SQLMenace