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 '!';

    结果都是

    妥了。

     
     
     
     
  • 相关阅读:
    minixml3.1库的使用
    linux coredump及函数栈空间大小分析
    linx 设备名字来由 sd sr sg st
    gcc 遇到过的语法问题
    I帧、B帧、P帧、NALU类型
    linux grub 使用
    结构体sockadrr、sockaddr_in、in_addr的定义
    linux c log 日志接口
    关于32位/64位版本头文件的重要
    汇编指令缩写
  • 原文地址:https://www.cnblogs.com/adamgq/p/14318035.html
Copyright © 2011-2022 走看看