zoukankan      html  css  js  c++  java
  • SQL通配符

    通常我们只是用 %  作为通配符,用来表示任意个字符。

    但sql中的通配符还有 下划线 _ ,用来标识任意一个字符

    实例

    SELECT * FROM Websites
    WHERE name LIKE '_oogle';

    执行输出结果:

     
     
    问题再延伸,如果我们数据中有包含下划线的字符,那么该怎么处理呢?
     
    --需求,找到name中包含下划线的内容,即 把前两条筛出来
    with x as
    (select '_haha' as name from dual  union all
    select '\_2haha'  as name from dual  union all
    select '2haha' as name from dual
    )
    select * from x where name like '%_%';

     不对,这里的下划线别理解成了通配符

    -- 那么使用右斜杠+下划线的模式来转译他,可以么?
    with x as
    (select '_haha' as name from dual  union all
    select '\_2haha'  as name from dual  union all
    select '2haha' as name from dual
    )
    select * from x where name like '%\_%';

     依然不对,这里斜杠并没有起到转译的作用。

    查了下,自己以前不认识这个关键字。ESCAPE

    -- 使用ESCAPE 关键字来表示【这个字符后边的东西,该被识别成普通字符。】?
    with x as
    (select '_haha' as name from dual  union all
    select '\_2haha'  as name from dual  union all
    select '2haha' as name from dual
    )
    select * from x where name like '%\_%' ESCAPE '';

     结果对了。那么换个别的字符呢?

    with x as
    (select '_haha' as name from dual  union all
    select '\_2haha'  as name from dual  union all
    select '2haha' as name from dual
    )
    select * from x where name like '%?_%' ESCAPE '?';
    ---
    
    with x as
    (select '_haha' as name from dual  union all
    select '\_2haha'  as name from dual  union all
    select '2haha' as name from dual
    )
    select * from x where name like '%!_%' ESCAPE '!';

    结果都是

    妥了。

     
     
     
     
  • 相关阅读:
    C# 二维码 ThoughtWorks.QRCode.dll
    Asp.net生命周期
    进程和线程,多线程等使用方法
    反射的使用与定义
    《委托和事件》
    《泛型集合》
    第三课时《枚举》
    数据库字段包括数组中的每一项
    .NetCore 图片压缩
    NetCore3.0 EF修改
  • 原文地址:https://www.cnblogs.com/adamgq/p/14318035.html
Copyright © 2011-2022 走看看