将模式与字符串进行匹配。
expression [ NOT ] REGEXP pattern [ ESCAPE escape-expression ]
expression 被搜索的字符串。
pattern 在 expression 内搜索的正则表达式。
有关正则表达式的语法的详细信息,请参见正则表达式概述。
escape-expression 在匹配中要使用的转义字符。缺省为反斜线字符 (\)。
REGEXP 搜索条件匹配整个字符串,而不是子串。要让某子串与该字符串匹配,将字符串用匹配字符串其余部分的通配符包围起来 (.*pattern.*
)。例如,SELECT ... WHERE Description REGEXP 'car'
仅与 car 匹配,与 sportscar 不匹配。但是,SELECT ... WHERE Description REGEXP '.*car'
则与 car、sportscar 和所有以 car 结尾的字符串都匹配。或者,也可以重写查询以使用 REGEXP_SUBSTR 函数,该函数用于搜索字符串中的子串。
当只依据子字符类进行匹配时,必须包含外部方括号以及用于子字符类的方括号。例如,expression REGEXP '[[:digit:]]'
)。有关子字符类匹配的详细信息,请参见正则表达式:特殊子字符类。
如果模式中的某文字是完全相同的字符(即,它们有相同的代码点值),则 REGEXP 只匹配该文字。字符类中的范围(例如,'[A-F]'
)只匹配代码点值大于或等于范围 (A) 中第一个字符的代码点值且小于或等于范围 (F) 中第二个字符的代码点值的字符。
有关对 LIKE、SIMILAR TO 和 REGEXP 之间如何处理匹配和范围计算进行的比较,请参见LIKE、REGEXP 和 SIMILAR TO 搜索条件。
比较是逐个字符执行的,这与等号 (=) 运算符或其它运算符的逐字符串比较不同。例如,在 UCA 归类(归类设置为 UCA 的 CHAR 或 NCHAR)中进行比较时,'?'='AE'
为 true,但 '?' REGEXP 'AE'
为 false。
REGEXP 搜索条件可以用于比较 CHAR 和 NCHAR 字符串。这种情况下会执行字符集转换,以便使用共同的数据类型进行比较。然后逐个代码点地执行比较。请参见CHAR 和 NCHAR 之间的比较。
通过在引号引起的值之前加前缀 N(例如,expression REGEXP N'pattern'
),可以将 expression 或 pattern 指定为 NCHAR 字符串文字。还可以使用 CAST 函数将模式转换为 CHAR 或 NCHAR(例如,expression REGEXP CAST(pattern AS datatype)
)。
请参见字符串文字和CAST 函数 [Data type conversion]。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |