[英]SQL Regular Expressions
我創建了以下用於匹配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)$'
我使用以下值作為測試數據; 但是,數據未提交:
ISBN 0 93028 923 4 | ISBN 1-56389-668-0 | ISBN 1-56389-016-X
我哪里錯了?
SQL Server中的LIKE
運算符不是正則表達式運算符。 你可以做一些復雜的模式匹配,但它不是正常的正則表達式語法。
你可以使用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]'
SQL Server 2005不支持開箱即用的REGEX表達式,您需要OLE自動化或CLR來通過UDF提供該功能。
唯一支持的通配符是%(any)和_(一),字符范圍(或否定)匹配使用[]可選[^]。 所以你的表達
'ISBN\x20(?=.{13}$)\d{1,5}([- ])\d{1,7}\1\d{1,6}\1(\d|X)$'
意味着一些非常奇怪的范圍[ - ]和其他一切都是字面的。
如果它分裂| 和doesen't帶空格,它可能缺少ISBN前的空間和/或后(\\ d | X) 這里 $ ..而且,我懷疑這是問題,但[ - ]可能是[ - ]
編輯:好的,當你得到一個正則表達式lib /控件時,請記住這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.