正则表达式语言由具有特定含义的特殊字符构成。我们已经看到.、 []、|和-等,还有其他一些字符。请问,如果你需要匹配这些字符,应该怎么办呢?例如,如果要找出包含.字符的值,怎样搜索?请看下面的例子:
SELECT vend_name FROM vendors WHERE vend_name REGEXP'.' ORDER BY vend_name;
输出
vend_name ACME Anvils R Us Furball Inc. Jet Set Jouets Et Ours LT Supplies
这并不是期望的输出,.匹配任意字符,因此每个行都被检索出来。
为了匹配特殊字符,必须用\\为前导。 \\-表示查找-, \\.表示查找.
SELECT vend_name FROM vendors WHERE vend_name REGEXP '\\.' ORDER BY vend_name;
输出
vend_name Furball Inc.
这才是期望的输出。\\.匹配.,所以只检索出一行。这种处理就是所谓的转义(escaping) ,正则表达式内具有特殊意义的所有字符都必须以这种方式转义。这包括.、|、[]以及迄今为止使用过的其他特殊字符。
\\也用来引用元字符(具有特殊含义的字符)
空白元字符 | 说明 |
---|---|
\\f \\n \Ir \it \V |
说明 换页 换行 回车 制表 纵向制表 |
匹配\ 为了匹配反斜杠(\)字符本身,需要使用\\\。
\或\\? 多数正则表达式实现使用单个反斜杠转义特殊字符,以便能使用这些字符本身。 但MySQL要求两个反斜杠 (MySQL自己解释一个,正则表达式库解释另一个) 。
转载请注明:成都千喜数据恢复中心 » SQL Server如何使用正则表达式匹配特殊字符