Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 语言元素 » 搜索条件 » LIKE、REGEXP 和 SIMILAR TO 搜索条件

 

REGEXP 搜索条件

将模式与字符串进行匹配。

语法
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。

国家字符 (NCHAR) 支持

REGEXP 搜索条件可以用于比较 CHAR 和 NCHAR 字符串。这种情况下会执行字符集转换,以便使用共同的数据类型进行比较。然后逐个代码点地执行比较。请参见CHAR 和 NCHAR 之间的比较

通过在引号引起的值之前加前缀 N(例如,expression REGEXP N'pattern'),可以将 expressionpattern 指定为 NCHAR 字符串文字。还可以使用 CAST 函数将模式转换为 CHAR 或 NCHAR(例如,expression REGEXP CAST(pattern AS datatype))。

请参见字符串文字CAST 函数 [Data type conversion]

另请参见