SQL正则表达式

Sud*_*ha 6 regex sql sql-server

我创建了以下用于匹配ISBN的SQL正则表达式模式:

CREATE RULE ISBN_Rule AS @value LIKE 'ISBN\x20(?=.{13}$)\d{1,5}([-])\d{1,7}\1\d{1,6}\1(\d|X)$'
Run Code Online (Sandbox Code Playgroud)

我使用以下值作为测试数据; 但是,数据未提交:

ISBN 0 93028 923 4 | ISBN 1-56389-668-0 | ISBN 1-56389-016-X
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

kel*_*oti 6

LIKESQL Server中的运算符不是正则表达式运算符.你可以做一些复杂的模式匹配,但它不是正常的正则表达式语法.

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


gbn*_*gbn 6

你可以使用LIKE来做到这一点.

你需要一些OR来处理不同的ISBN 10和13格式

对于上面的字符串:

LIKE 'ISBN [0-9][ -][0-9][0-9][0-9][0-9][0-9][ -][0-9][0-9][0-9][ -][0-9X]'
Run Code Online (Sandbox Code Playgroud)