(转)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】
确定给定的字符串是否与指定的模式匹配.模式可以包含常规字符和通配符字符.模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配.然而,可使用字符串的任意片段匹配通配符.与使用 = 和 != 字符串比 ...
随机推荐
- */美女镇楼/*>>>---PHP中的OOP-->面对过程与面对对象基础概念与内容--(封装、继承、多态)
前 言 OOP 学习了好久的PHP,今天来总结一下PHP中的重要成员OOP 1 面向过程&面向对象 1.专注于解决一个问题的过程.面向过程的最大特点,是由一个一个的函数去解决处理这 ...
- linux--centos服务器配置
配置Centos服务器 1. 安装centos 安装时注意分区留下一个/data区给网站内容存储. 2. 配置网络连接 默认centos网络连接不是开机启动的,需要配置. vi /etc/sysc ...
- tcp/ip详解 卷1 -- 协议概述
第一章 概述 分层 TCP/IP 通常被认为是一个四层协议系统. 每一层负责不同的功能. 链路层, 也成为数据链路层或者网络接口层. 通常包括 操作系统中的设备驱动程序和计算机中对应的网络接口卡. 主 ...
- 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)
编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...
- 基于spring多数据源动态调用及其事务处理
需求: 有些时候,我们需要连接多个数据库,但是,在方法调用前并不知道到底是调用哪个.即同时保持多个数据库的连接,在方法中根据传入的参数来确定. 下图的单数据源的调用和多数据源动态调用的流程,可以看出在 ...
- socket编程 做一回文抄公
socket接口是TCP/IP网络的API,socket接口定义了许多函数或例程,程序员能够用他们来研发TCP/IP网络上的应用程式.要学Internet上的TCP/IP网络编程,必须理解socket ...
- [leetcode-438-Find All Anagrams in a String]
Given a string s and a non-empty string p, find all the start indices of p's anagrams in s.Strings c ...
- 获取元素到body/html的距离函数
获取元素到body的距离: <script> function offsetDis(obj) { var l = 0, t = 0; while(obj) { l = l + obj.of ...
- java网络编程之socket
网络编程是什么 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机.数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外一个设备反馈的数据. ...
- Ubantu 16.4 samba安装配置
本文总结了Ubantu 16.04 环境下的samba安装.配置及使用.本文为原创,也是我的第一篇博客,以后会经常写博客,记录自己的学习.总结及研究,让博客见证着我成长的轨迹. 下文中的所有命令均使用 ...