MATCHES 运算符

MATCHES 运算符是用于将列值与另一列值或括起来的字符串相比较的 GBase 8s 扩展。

MATCHES 运算符支持括起来的字符串中的这些通配符。

通配符
作用
*
与零个或多个字符的任何字符串相匹配
?
与任何单个字符相匹配
[ . . . ]
与包括范围的任何括起来的字符相匹配,如在 [a-z] 中那样。不可转义方括号内的字符。
^
作为方括号内的第一个字符,与未罗列的任何字符相匹配。因此,[^abc] 与除了 abc 之外的任何字符相匹配。
\
移除下一字符的特殊意义(通过指定 \\\*\?,等等,来与字面的 \ 或任何其他通配符相匹配)
下列条件单独或在更长的字符串内测试字符串 tennis,诸如 tennis ball table tennis paddle
WHERE description MATCHES '*tennis*'
对于名称 Frankfrank,下列条件为 TRUE
WHERE fname MATCHES '[Ff]rank'
对于以 Ff 开头的任何名称,下列条件为 TRUE
WHERE fname MATCHES '[Ff]*'
对于任何以字母 abcd 结尾的任何名称,下一条件为 TRUE
WHERE fname MATCHES '*[a-d]'

MATCHES 有一相关联的 matches( ) 运算符函数。您可为您自己的用户定义的数据类型定义 matches( ) 函数。要获取更多信息,请参阅 GBase 8s 用户定义的例程和数据类型开发者指南

如果 DB_LOCALE 或 SET COLLATION 指定支持本地化排序的非缺省的语言环境,且您使用方括号([ . . . ])符号为 MATCHES 运算符指定范围,则数据库服务器使用本地化的排序顺序,而不是代码集顺序,来解释该范围并比较那些有 CHAR、CHARACTER VARYING、LVARCHAR、NCHAR、NVARCHAR 和 VARCHAR 数据类型的值。

通常的规则是,仅可在本地化的排序顺序中比较 NCHAR 和 NVARCHAR 数据类型,此行为是该规则的例外。要获取更多关于包括 MATCHES 或 LIKE 运算符的条件的 GLS 方面的信息,请参阅 GBase 8s GLS 用户指南

在 NLSCASE INSENSITIVE 数据库中,对 NCHAR 和 NVARCHAR 数据的比较操作不理会大小写的差异,因此数据库服务器将包含相同序列字符的字符串之中的大写变量作为重复处理。作为 MATCH 运算符的运算对象,下列字符串的所有对都返回 TRUE:

'beta' 'Beta' 'BETA' 'bETa' 'betA' 'BetA'

要获取更多信息,请参阅 在 NLSCASE INSENSITIVE 数据库中重复的行在区分大小写的数据库中的 NCHAR 和 NVARCHAR 表达式