2

T-SQL で正規表現を使用して、ISSN パターンに一致するレコードを選択するクエリを取得しようとしています: http://en.wikipedia.org/wiki/International_Standard_Serial_Number

つまり、4 桁、ダッシュ、および 4 桁または 3 桁と文字 X です。たとえば、次のようになります。

1234-5678 または 1234-567X

X は小文字にすることができます。

私は試した:

"\d{4}-\d{3}(\d|x|X)"

SELECT [KBID],  [ISSN]
FROM [ISSNTable] 
WHERE  [ISSN] LIKE '%\d{4}\-\d{3}(\d|x|X)%'
order by ISSN desc

しかし、それは空に戻ります。

私がこれを試してみると:

WHERE [ISSN] not LIKE '%\^d{4}-\d{3}(\d|x|X)%'

不適切にフォーマットされたデータであっても、テーブル内のすべてを返します。

4

2 に答える 2

2

T-SQLLIKEはパターン マッチャーですが、正規表現パターン マッチャーではありません。

DECLARE @issn varchar(9)
set @issn = '1234-567X'
SELECT 
CASE WHEN @issn LIKE '[0-9][0-9][0-9][0-9][-][0-9][0-9][0-9][X0-9]'
    THEN 1 
    ELSE 0 
END AS isValidISSN

http://msdn.microsoft.com/en-us/library/ms179859.aspx

于 2013-08-15T21:44:59.950 に答える
0

Tsql は、文字クラスの初歩的な正規表現のみをサポートします。繰り返し式{n}や のようなショートカットはサポートしません\d

これを試して:

SELECT [KBID], [ISSN]
FROM [ISSNTable] 
WHERE [ISSN] LIKE '[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9xX]%'
order by ISSN desc
于 2013-08-15T21:55:08.790 に答える