zoukankan      html  css  js  c++  java
  • sqlserver like 后面的通配符注意事项

    sqlserver like 后面的通配符注意事项

    1.%:匹配零个及多个任意字符;

    2. _:与任意字符匹配; 

    3.[]:匹配一个范

    4.[^]:排除一个范

    以上4种是最基本的使用方法,但是字符串中出的特殊字符:'%''[''[]' '_' 时,我们又该如何处理呢?

    直接上代码:

    GO
    CREATE TABLE #TEMP(
     VAL NVARCHAR(100)
    )
    GO
    
    INSERT INTO #TEMP VALUES('关于[中国]的文件')  --(想要的数据)
    INSERT INTO #TEMP VALUES('关于[日本]的文件')
    
    INSERT INTO #TEMP VALUES('T_T的相关文件')     --(想要的数据)
    INSERT INTO #TEMP VALUES('TMT的相关文件')
    
    INSERT INTO #TEMP VALUES('增长%50')           --(想要的数据)
    INSERT INTO #TEMP VALUES('增长%60')           --(想要的数据)
    INSERT INTO #TEMP VALUES('增长5倍')
    INSERT INTO #TEMP VALUES('增长6倍')
    
    INSERT INTO #TEMP VALUES('你好[]')            --(想要的数据)
    INSERT INTO #TEMP VALUES('你好x')
    
    DROP TABLE #TEMP
    GO
    SELECT * FROM #TEMP WHERE VAL LIKE '关于[中国]%'
    SELECT * FROM #TEMP WHERE VAL LIKE '关于[[]中国]%' --这个才是我们想要的sql
    
    SELECT * FROM #TEMP WHERE VAL LIKE 'T_T%'
    SELECT * FROM #TEMP WHERE VAL LIKE 'T[_]T%' --这个才是我们想要的sql
    
    SELECT * FROM #TEMP WHERE VAL LIKE '增长%'
    SELECT * FROM #TEMP WHERE VAL LIKE '增长[%]%'  --这个才是我们想要的sql,增长百分比的结果
    
    SELECT * FROM #TEMP WHERE VAL LIKE '你好[]'
    SELECT * FROM #TEMP WHERE VAL LIKE '你好[[]]' --这个才是我们想要的sql

    总之:

    1. 用 like '[[]' 匹配特殊字符 '['

    2. 用 like ']' 匹配特殊字符 ']'

    3. 用 like '[[]]' 匹配特殊字符 '[]'

    4. 用 like '[_]' 匹配特殊字符 '_'

    5. 用 like '[%]' 匹配特殊字符 '%'

    对于其他的特殊字符:'^', '-', ']' 因为它们本身在包含在 '[]' 中使用,所以需要用另外的方式来转义,于是就引入了 like 中的escape 子句,另外值得注意的是:escape 可以转义所有的特殊字符。

     例如:

    --可以让我们的一些关键字 进行转义滴呀 
     SELECT * FROM #TEMP WHERE VAL LIKE '你好/[/]' ESCAPE '/' 
     

     可是不要忘了还有转义符自身,万一用户输入转义符的话,
     以上的处理就会发生SQL错误。所以也必须对转义符进行变换。变换方法就是将[/]转换为[//]

     还有我们的引号(')

    INSERT INTO #TEMP VALUES('"你好"')
    
    INSERT INTO #TEMP VALUES('''-------''')
    
    SELECT * FROM #TEMP WHERE VAL LIKE '"你%'
    
    SELECT * FROM #TEMP WHERE VAL LIKE '''-%'''  --三个' 相当于一个’ 最好使用 "
  • 相关阅读:
    hdu 1231 最大连续子序列
    数据加载初始化问题
    分页查询
    PHP-引入文件(include)后,页面错位,不居中解决办法
    数据库中的事务和锁(乐观、悲观锁,共享、排他锁,死锁)
    java操作excel 工具类
    微信公众号处理
    java实用资料
    【转】字符流和字节流的区别,使用场景,相关类
    基于redis分布式锁实现“秒杀”
  • 原文地址:https://www.cnblogs.com/mc67/p/5063065.html
Copyright © 2011-2022 走看看