“charlist”样式通配符是SQL-92标准的一部分吗?

时间:2010-10-29 00:13:28

标签: sql operators standards wildcard

SQL通配符“%”和“_”已有详细记录并广为人知。然而,作为w3schools explains,还有“charlist”样式通配符用于匹配给定范围内或外的单个字符,例如,查找所有名为Carl的人,而不是那些名为Earl的人:

select * from Person where FirstName like '[A-D]arl'

...或者找到相反的情况,使用:

select * from Person where FirstName like '[!A-D]arl'

或(取决于RDBMS,大概):

select * from Person where FirstName like '[^A-D]arl'

这种类型的通配符是SQL-92标准的一部分,以及哪些数据库实际支持它?例如:

  • Oracle 11g不支持
  • SQL Server 2005支持它,否定运算符为“^”(不是“!”)

2 个答案:

答案 0 :(得分:2)

SQL-99标准有一个SIMILAR TO谓词,它使用“charlist”样式以及“%”和“_”通配符。

尽管如此,SQL-92标准中没有类似的内容(没有双关语)。

答案 1 :(得分:1)

“charlist”运算符看起来像正则表达式或它们的有限子集。 AFAIK在SQL-92中没有指定正则表达式语法,尽管许多数据库支持正则表达式,并且它们支持它的方式各不相同。例如,Oracle具有进行正则表达式比较和替换的功能。不知道别人怎么做。

分享并享受。