代码之家  ›  专栏  ›  技术社区  ›  Andrew Swan

“字符列表”式通配符是SQL-92标准的一部分吗?

  •  0
  • Andrew Swan  · 技术社区  · 15 年前

    w3schools explains ,也有“charlist”样式的通配符,用于匹配给定范围内或范围外的单个字符,例如查找所有名为Carl的人,而不是名为Earl的人:

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

    ... 或者,要找到相反的结果,请使用以下两种方法之一:

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

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

    这种类型的通配符是SQL-92标准的一部分吗?哪些数据库真正支持它?例如:

    • Oracle 11g不支持它
    • SQL Server 2005支持它,否定运算符为“^”(而不是“!”)
    2 回复  |  直到 15 年前
        1
  •  2
  •   onedaywhen    15 年前

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

        2
  •  1
  •   Bob Jarvis - Слава Україні    15 年前

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

    分享和享受。