当前位置:  开发笔记 > 后端 > 正文

SQL LIKE子句的特殊字符列表

如何解决《SQLLIKE子句的特殊字符列表》经验,为你挑选了3个好方法。

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

例如

SELECT Name FROM Person WHERE Name LIKE '%Jon%'

SQL Server:

    %

    _

    [说明符]例如[az]

    [^符]

    ESCAPE子句例如%30!%%'ESCAPE'!' 将评估30%为真

    '人物需要逃脱'例如他们变得他们'

MySQL的:

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

    _ - 任何单个字符

    ESCAPE子句例如%30!%%'ESCAPE'!' 将评估30%为真

甲骨文:

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

    _ - 任何单个字符

    ESCAPE子句例如%30!%%'ESCAPE'!' 将评估30%为真

SYBASE

    %

    _

    [说明符]例如[az]

    [^符]

进展:

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

    _ - 任何单个字符

    参考指南 [PDF]

PostgreSQL的:

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

    _ - 任何单个字符

    ESCAPE子句例如%30!%%'ESCAPE'!' 将评估30%为真

ANSI SQL92:

    %

    _

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

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

    [specifier]

    [^specifier]

    | - 两种选择中的任何一种

    * - 重复前一项零次或多次.

    + - 重复前一项一次或多次.

    () - 将项目组合在一起

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



1> Çağdaş Tekin..:

对于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]也可以.对困惑感到抱歉.

2> bobince..:

ANSI SQL92:

%

_

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

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

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

谢谢SQL!gnnn



3> Heather M..:

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

史密斯的 - >史密斯的

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有