结合使用 Regex 和 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)%'
它返回表中的所有内容,甚至是格式错误的数据。
最佳答案
T-SQL LIKE
是一个模式匹配器,但不是正则表达式模式匹配器。
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
关于sql - 如何使用 Regex 查询 ISSN 格式模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18262142/