Oracle数据库模糊查询语句一个容易忽略的结果:空记录
2012-06-11 15:17
232 查看
原因:
使用SQL语句如下:
select count(*) from test;
结果为1390.
select count(*) from test where bb not like ‘%禁用%'
结果为393.
实际浏览过程中发现未禁用结果集肯定超过393条记录。
过程:
1、首先怀疑字符集的问题,也许是客户端字符集与服务器字符集不匹配。
在别人的机器上使用上述SQL语句后,反反复复,类似替换,结果都相同。
2、仍然怀疑是字符集的问题,颠三倒四没有发现问题真实原因,几近抓狂。
3、偶然发现bb字段有许多为空,仔细分析一下,发现bb not like '%禁用%'不会匹配空记录,于是改为
select count(*) from test where bb not like ‘%禁用%' or bb is null
结果为1356。
结论:
模糊匹配由于不经常使用,所以会导致使用时马虎大意,最终导致人力抓狂。
使用SQL语句如下:
select count(*) from test;
结果为1390.
select count(*) from test where bb not like ‘%禁用%'
结果为393.
实际浏览过程中发现未禁用结果集肯定超过393条记录。
过程:
1、首先怀疑字符集的问题,也许是客户端字符集与服务器字符集不匹配。
在别人的机器上使用上述SQL语句后,反反复复,类似替换,结果都相同。
2、仍然怀疑是字符集的问题,颠三倒四没有发现问题真实原因,几近抓狂。
3、偶然发现bb字段有许多为空,仔细分析一下,发现bb not like '%禁用%'不会匹配空记录,于是改为
select count(*) from test where bb not like ‘%禁用%' or bb is null
结果为1356。
结论:
模糊匹配由于不经常使用,所以会导致使用时马虎大意,最终导致人力抓狂。
相关文章推荐
- SqlServer和Oracle从多行记录(数据集)中查询结果并拼接成一个字符串的SQL语句(纵表数据转成拼接的文本)
- 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期
- Java程序和Oracle数据库调用相同的SQL查询语句,结果却不同
- 在SQL语句中查询多条记录并把多条记录同一字段的值连接成一个字符并返回的写法
- MYSQL导出查询结果语句,记录一下
- SQL 从一个sql 语句结果中(作为AS一个表) 查询结果 ;按照count排序
- Oracle数据库,忽略大小写Like模糊查询(SQL Server,MySql原理相同)
- 在oracle数据库中需要查询出前8条记录的sql语句怎么写?
- 在查询结果中添加一列表示记录的行数的sql语句
- 当只有一个输入条件的时匹配数据库表中多个字段模糊查询的SQL语句
- sql select语句查询的时候增加一个字段到结果里,
- 在查询结果中添加一列表示记录的行数的sql语句
- 查询|删除同一表内一个或多个字段重复记录的SQL语句
- 如何用一个SQL语句查询多个表的记录数
- 解决模糊查询的结果记录排序问题
- 在oracle数据库中需要查询出前8条记录的sql语句怎么写
- 现在有一个表Table1进行随机查询, 检索结果记录条数不限, 但是要求Num求和结果为一个固定值,如结果为15
- SQL语句技巧:查询存在一个表而不在另一个表中的数据记录
- 解决模糊查询的结果记录排序问题
- SQL语句中把多条记录同一字段的值连接成一个字符串显示结果集(sql stuff)