SQL LIKE子句的特殊字符列表

Jon*_*ker 117 sql special-characters sql-like

什么是SQL的所有特殊字符的完整列表(我对SQL Server感兴趣,但其他的也很好)LIKE子句?

例如

SELECT Name FROM Person WHERE Name LIKE '%Jon%'
Run Code Online (Sandbox Code Playgroud)

SQL Server:

  1. %
  2. _
  3. [说明符]例如[az]
  4. [^符]
  5. ESCAPE子句例如%30!%%'ESCAPE'!' 将评估30%为真
  6. '人物需要逃脱'例如他们变得他们'

MySQL的:

  1. % - 任何零个或多个字符的字符串.
  2. _ - 任何单个字符
  3. ESCAPE子句例如%30!%%'ESCAPE'!' 将评估30%为真

甲骨文:

  1. % - 任何零个或多个字符的字符串.
  2. _ - 任何单个字符
  3. ESCAPE子句例如%30!%%'ESCAPE'!' 将评估30%为真

SYBASE

  1. %
  2. _
  3. [说明符]例如[az]
  4. [^符]

进展:

  1. % - 任何零个或多个字符的字符串.
  2. _ - 任何单个字符

    参考指南 [PDF]

PostgreSQL的:

  1. % - 任何零个或多个字符的字符串.
  2. _ - 任何单个字符
  3. ESCAPE子句例如%30!%%'ESCAPE'!' 将评估30%为真

ANSI SQL92:

  1. %
  2. _
  3. 仅在指定时才使用ESCAPE字符.

PostgreSQL还有SIMILAR TO运算符,它添加了以下内容:

  1. [specifier]
  2. [^specifier]
  3. | - 两种选择中的任何一种
  4. * - 重复前一项零次或多次.
  5. + - 重复前一项一次或多次.
  6. () - 将项目组合在一起

我们的想法是将这个社区Wiki作为一个"一站式商店".

Çağ*_*kin 22

对于SQL Server,请访问http://msdn.microsoft.com/en-us/library/ms179859.aspx:

  • %任何零个或多个字符的字符串.

    WHERE title LIKE '%computer%' 在书名的任何地方找到所有带有"计算机"一词的书名.

  • _任何单个字符.

    WHERE au_fname LIKE '_ean' 找到以ean结尾的所有四个字母的名字(Dean,Sean等).

  • []指定范围内的任何单个字符([af])或set([abcdef]).

    WHERE au_lname LIKE '[C-P]arsen'查找作者姓氏以arsen结尾,并以C和P之间的任何单个字符开头,例如Carsen,Larsen,Karsen等.在范围搜索中,范围中包含的字符可能会根据排序规则的排序规则而有所不同.

  • [^]任何不在指定范围([^ af])或集合([^ abcdef])内的单个字符.

    WHERE au_lname LIKE 'de[^l]%' 所有作者姓氏以de开头,后面的字母不是l.

  • 等等,不.它就像RegEx所以[0-9]也可以.对困惑感到抱歉. (3认同)

bob*_*nce 6

ANSI SQL92:

  • %
  • _
  • 仅在指定时才使用ESCAPE字符.

令人失望的是,许多数据库不遵守标准规则并添加额外字符,或者在缺少时错误地启用默认值为'\'的ESCAPE.就像我们没有'\'已经有足够的麻烦了!

在这里编写与DBMS无关的代码是不可能的,因为你不知道你将要逃脱哪些角色,标准说你无法逃脱不需要转义的东西.(见第8.5节/一般规则/ 3.a.ii.)

谢谢SQL!gnnn


Hea*_*r M 5

您应该补充一点,您必须在SQL Server中添加额外的'以逃避exising':

史密斯的 - >史密斯的