(转)sql通配符
背景:一次搞清sql查询中的通配符问题。
1 sql通配符
在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。SQL 通配符必须与 LIKE 运算符一起使用,必须放在引号内。
在 SQL 中,可使用以下通配符:
%:替代一个或多个字符。 _:仅替代一个字符。 [charlist]:字符列中的任何单一字符。 [^charlist]或者[!charlist]:不在字符列中的任何单一字符。
1.1 举例分析
例子:
SELECT * FROM Persons WHERE City LIKE 'Ne%';
SELECT * FROM Persons WHERE LastName LIKE 'C_r_er';
选取居住的城市以 "A" 或 "L" 或 "N" 开头的人: SELECT * FROM Persons WHERE City LIKE '[ALN]%'
选取居住的城市不以 "A" 或 "L" 或 "N" 开头的人: SELECT * FROM Persons WHERE City LIKE '[!ALN]%'
1. %:模糊匹配一个或多个字符。如,以ab开头
SELECT * FROM (
SELECT 'abc_2sd_38u' 'a'
UNION ALL
SELECT 'bcf' 'a'
) c
WHERE c.a LIKE 'ab%'
a
-----------
abc_2sd_38u
2. _:占位符,匹配任意一个字符。如,以abc_开头
SELECT * FROM (
SELECT 'abc_2sd_38u' 'a'
UNION ALL
SELECT 'abcd_5d_3u' 'a'
UNION ALL
SELECT 'abc' 'a'
) c
WHERE c.a LIKE 'abc[_]%'
-----------
abc_2sd_38u
3. []:目标匹配字符:匹配单个字符,若写了多个,匹配任一。如,所有以1或者2开头的
SELECT * FROM (
SELECT '1_21' 'a'
UNION ALL
SELECT '' 'a'
UNION ALL
SELECT '' 'a'
UNION ALL
SELECT '' 'a'
UNION ALL
SELECT '' 'a'
UNION ALL
SELECT '' 'a'
) x
WHERE x.a LIKE '[12]%'
-----------
1_21
121
131
142
223
4. [^]:目标匹配字符,[]相反。如,所有非1、2开头的
SELECT * FROM (
SELECT '1_21' 'a'
UNION ALL
SELECT '' 'a'
UNION ALL
SELECT '' 'a'
UNION ALL
SELECT '' 'a'
UNION ALL
SELECT '' 'a'
UNION ALL
SELECT '' 'a'
) x
WHERE x.a LIKE '[^12]%'
a
-----------
324
2 问题
2.1 模糊查询与通配符冲突
SELECT * FROM mode_info WHERE node_path LIKE 'abc_%'
上述处理时错误的。要避免该错误,很简单:只要避免‘_’在此处作为通配符存在即可。如何避免呢,那就需要用到另外一个通配符'[]'。修改sql:
SELECT * FROM mode_info WHERE node_path LIKE 'abc[_]%'
2.2 数据库中模糊查询不到结果
如下图,左右加 %% 是能够查询到结果的。

但是要查询以Y04结尾的信息时候就查不到结果

后来仔细比对发现是数据库中字段后面存在两个空格,导致模糊结果无法匹配。

这种情况需要注意。
(转)sql通配符的更多相关文章
- SQL TOP 子句、SQL LIKE 操作符、SQL 通配符
TOP 子句 TOP 子句用于规定要返回的记录的数目. 对于拥有数千条记录的大型表来说,TOP 子句是非常有用的. 注释:并非所有的数据库系统都支持 TOP 子句. SQL Server 的语法: S ...
- sql常识-SQL 通配符
在搜索数据库中的数据时,您可以使用 SQL 通配符. SQL 通配符 在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符. SQL 通配符必须与 LIKE 运算符一起使用. 在 SQL 中, ...
- SQL 通配符
在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符.SQL 通配符必须与 LIKE 运算符一起使用,必须放在引号内. 在 SQL 中,可使用以下通配符: %:替代一个或多个字符. _:仅替代 ...
- SQL通配符
通配符可用于替代字符串中的任何其他字符. 在 SQL 中,通配符与 SQL LIKE 操作符一起使用. SQL 通配符用于搜索表中的数据. 在 SQL 中,可使用以下通配符: 通配符 描述 % 替代 ...
- SQL 通配符的使用?三种
SQL 通配符 通配符可用于替代字符串中的任何其他字符. SQL 通配符 在 SQL 中,通配符与 SQL LIKE 操作符一起使用. SQL 通配符用于搜索表中的数据. 在 SQL 中,可使用以下通 ...
- 【数据库】 SQL 通配符
[数据库] SQL 通配符 1. % : 替代一个或多个字符 2. _ : 仅替代一个字符 3. [] : 字符列中的任何单一字符 4. [^charlist] 或者 [!charlist] : 不 ...
- sql通配符+sql中查询条件包含下划线等通配符的写法
一.SQL 通配符 在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符. SQL 通配符必须与 LIKE 运算符一起使用. 在 SQL 中,可使用以下通配符: 通配符 描述 % 替代一个或多 ...
- SQL-W3School-高级:SQL 通配符
ylbtech-SQL-W3School-高级:SQL 通配符 1.返回顶部 1. 在搜索数据库中的数据时,您可以使用 SQL 通配符. SQL 通配符 在搜索数据库中的数据时,SQL 通配符可以替代 ...
- 关于sql通配符检索问题-【.NET】
确定给定的字符串是否与指定的模式匹配.模式可以包含常规字符和通配符字符.模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配.然而,可使用字符串的任意片段匹配通配符.与使用 = 和 != 字符串比 ...
随机推荐
- Java8部分新特性的学习
Java8中的新特性 一.Lambda表达式 Lambda表达式可以理解为一种可传递的匿名函数:它没有名称,但又参数列表.函数主体.返回类型,可能还有一个可以抛出的异常列表. 匿名:和匿名类类似的,它 ...
- Bash中的数学计算
一.整数计算 1.整数 $delare -i num$num=5+5$echo $num10 $num="5 + 8"$echo $num13注意:算式中如果有空格,需要用引号引起 ...
- Discuz添加自定义模板广告
在做Discuz中广告的时候碰到个大问题,现在我需要做一个轮播的通屏广告位,调用广告图片的代码应该是以下代码:<ul> <li style="background: ...
- Linq用法笔记
一.什么是Linq? LINQ即Language Integrated Query(语言集成查询),LINQ是集成到C#和Visual Basic.NET这些语言中用于提供查询数据能力的一个新特性. ...
- Linux基础命令之总结一
[root@ping ~]# tree -L 1 / #使用tree 命令查看根目录下的一层的目录结构 ls - list directory contents[root@ping ~]# ls ...
- thinkphp导出csv格式的表格
<?php /** * Created by PhpStorm. * User: hanks * Date: 2016/4/20 * Time: 13:51 */ namespace Home\ ...
- [leetcode-537-Complex Number Multiplication]
Given two strings representing two complex numbers. You need to return a string representing their m ...
- JQuery实现点击关注和取消功能
点赞,网络用语,表示“赞同”.“喜爱”. 该网络语来源于网络社区的“赞”功能.送出和收获的赞的多少.赞的给予偏好等,在某种程度能反映出你是怎样的人以及处于何种状态.点赞的背后,反映出你自己.与之对应的 ...
- Akka(11): 分布式运算:集群-均衡负载
在上篇讨论里我们主要介绍了Akka-Cluster的基本原理.同时我们也确认了几个使用Akka-Cluster的重点:首先,Akka-Cluster集群构建与Actor编程没有直接的关联.集群构建是A ...
- js把时间戳转换为普通日期格式
第一种 function getLocalTime(nS) { return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1 ...