将模式与字符串进行匹配。
expression [ NOT ] SIMILAR TO pattern [ ESCAPE escape-expression ]
expression 要在其中进行搜索的表达式。
pattern 在 expression 内搜索的正则表达式。
有关支持的正则表达式语法的详细信息,请参见正则表达式概述。
escape-expression 在匹配中要使用的转义字符。缺省的转义字符为零字符,可被指定为 "\x00" 形式的字符串文字。
正则表达式语法 | 含义 |
---|---|
\x | 匹配任何等于 x 的字符,其中转义字符采用反斜线字符 (\)。例如,\[ 与 '[' 匹配。
|
x | 任何字符(除了元字符)都与其自身匹配。例如,A 与 'A' 匹配。
|
要将子串与字符串匹配,应使用百分号通配符 (%expression)。例如,SELECT ... WHERE Description SIMILAR TO 'car'
仅与 car 匹配,与 sportscar 不匹配。但是,SELECT ... WHERE Description SIMILAR TO '%car'
则与 car、sportscar 和所有以 car 结尾的字符串都匹配。
当只依据子字符类进行匹配时,必须包含外部方括号以及用于子字符类的方括号。例如,expression SIMILAR TO '[[:digit:]]')。有关子字符类匹配的详细信息,请参见正则表达式:特殊子字符类。
比较是逐个字符执行的,这与等号 (=) 运算符或其它运算符的逐字符串比较不同。例如,在 UCA 归类(归类设置为 UCA 的 CHAR 或 NCHAR)中进行比较时,'?'='AE'
为 true,但 '?' SIMILAR TO 'AE'
为 false。
对于逐个字符进行的匹配比较,被搜索的表达式中的每个字符都必须与 SIMILAR TO 模式中的一个字符或一个通配符匹配。
SIMILAR TO 使用归类来确定字符等同性并计算字符类范围。例如,如果数据库不区分大小写和重音,则匹配项也不区分大小写和重音。范围也同样使用归类排序顺序进行计算。
有关对 LIKE、SIMILAR TO 和 REGEXP 之间如何处理匹配和范围计算进行的比较,请参见LIKE、REGEXP 和 SIMILAR TO 搜索条件。
SIMILAR TO 搜索条件可以用于比较 CHAR 和 NCHAR 字符串。这种情况下会执行字符集转换,以便使用共同的数据类型进行比较。然后逐个字符地执行比较。请参见CHAR 和 NCHAR 之间的比较。
通过在引号引起的值之前加前缀 N(例如,expression SIMILAR TO N'pattern'
),可以将 expression 或 pattern 指定为 NCHAR 字符串文字。还可以使用 CAST 函数将模式转换为 CHAR 或 NCHAR(例如,expression SIMILAR TO CAST(pattern AS datatype)
)。
请参见字符串文字和CAST 函数 [Data type conversion]。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |