sql between and 无效、无结果及注意事项
基本
如果有时候使用between and 子句查询不到数据,那么可能犯了这个错误:
select * from table where column between xxx and yyy
你以为查询结果是xxx和yyy之间的数据,而忽略了他们的顺序是有要求的。 列表的值必须是xxx所代表的值在排前,而yyy所代表的值在后才能够查询到。并不是说只要数据被 xxx
和 yyy
包围就能查询到。这个子句更像 from xxx to xxx
。更准确的说是查列中从xxx(数值)到yyy(数值)的数据。
它的语法:
test_expression [ NOT ] BETWEEN begin_expression AND end_expression
微软的文档对此描述得比较清楚:
https://docs.microsoft.com/zh-cn/sql/t-sql/language-elements/between-transact-sql?view=sql-server-2017
实例
存在这么一个表:
那么执行
SELECT * FROM persons WHERE LastName BETWEEN '尼玛兽' AND 'Bush';
其结果为空。
然而交换between 和and 值的位置,得到的也并不是期望的结果:
SELECT * FROM persons WHERE LastName BETWEEN 'Bush' AND '尼玛兽';
尼玛兽
之后的东西都出来了。
如果执行
SELECT * FROM persons WHERE LastName BETWEEN 'carter' AND 'Wilson';
你以为 尼玛兽
会存在,事实上不会,你以为 hehe
不会存在,但他就在那里。
很明显了,它比较的是字段的值:
xxx<= val <=yyy
上面比较的就是字符串值了,而并非直接一个框,选中中间。
一个悲催的事情是:不同的数据库对 BETWEEN…AND 操作符的处理方式是有差异的。可能相当于:
x<= val <=y
或 x< val <y
或 x<= val <y
所以,得检查所使用数据库系统是如何处理 BETWEEN….AND 操作符的。
sql between and 无效、无结果及注意事项相关推荐
- SQL对象名无效怎么办法 华骨龙
使用sqlserver数据库时,产生SQL对象名无效的问题一般是以下两种常见原因,下面根据不同的原因给出解决方法. 原因一:数据库做过迁移,新数据库的对象所有者名称不同造成 数据库做了迁移后,一般 ...
- Error querying database. Cause: java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is ...
- java无效字符 怎么解决_java.sql.SQLException: ORA-00911: 无效字符 解决方法
java建立oracle数据库,查询是出现以下错误信息: ava.sql.SQLException: ORA-00911: 无效字符 at oracle.jdbc.driver.DatabaseErr ...
- java.sql.SQLException: ORA-00911: 无效字符 解决方法
如果你用java写程序访问数据库,出现这个问题: java.sql.SQLException: ORA-00911: 无效字符 at oracle.jdbc.driver.DatabaseError. ...
- java光标位置无效_java - java.sql.SQLException:无效的光标位置 - 堆栈内存溢出
我创建了一个简单的应用程序,使用户可以购买门票. 但是,每当我尝试购买" n"张门票时,都会遇到此错误. 现在,我知道在使用数据库进行操作时需要crs.next()语句,我已经使用 ...
- 解决bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 报错: ### Cause: java.sql.SQLSyntaxErrorException ...
- java sql in无效数字_java.sql.SQLSyntaxErrorException: ORA-01722: 无效数字
### Error updating database. Cause: java.sql.SQLSyntaxErrorException: ORA-01722: 无效数字 ### The error ...
- mybatis项目报错:java.sql.SQLException: ORA-00911: 无效字符 解决方法
mybatis项目报错:java.sql.SQLException: ORA-00911: 无效字符 解决方法 参考文章: (1)mybatis项目报错:java.sql.SQLException: ...
- ### Cause: java.sql.SQLSyntaxErrorException: ORA-01722: 无效数字
org.springframework.dao.DataIntegrityViolationException: ### Error querying database. Cause: java.sq ...
- java.sql.SQLException: ORA-00911: 无效字符(编译器大坑)
今天遇到一个问题,java中执行sql,sql明明是对的,复制到datagrip(或 plsql Dev)都能执行,但就是报错: 1017 122715 [http-apr-18083-exec-7] ...
最新文章
- 请求接口时params和data的区别
- 多线程同步之 WaitableTimer (等待定时器对象)[续三]
- java 判断日期是同一天_如何检查Java中的两个日期是否在同一天
- CompletableFuture源码详解之java.util.concurrent.CompletableFuture#runAsync(java.lang.Runnable)
- MongoDB最简单的入门教程之四:使用Spring Boot操作MongoDB
- (转)Cobbler无人值守批量安装Linux系统
- Android学习笔记(五)——RadioGroupRadioButton
- Turbo | 简介与安装
- java 合并两个有序数组
- matlab opnet,OPNET中设计网络 MATLAB
- ContentProvider跨进程注册、启动流程源码解析
- Windows 10 21H1开启关闭卓越模式
- acc 蓝牙_蓝牙音频传输格式:ACC,SBC,APTX和LDAC
- 数字证书的概念以及作用
- 判断用户flash是否安装了flash以及flash的版本
- php mysql 排班表_PHP倒班五班三倒
- 编译chrome for android,Chrome for Android 编译了两天终于在师傅指导下搞定
- 数字音频总线A2B开发详解二十:ADAU1701做的功放板的音效(26个例程)(第一部分)
- linux sh脚本各种数值进制转换(比如10进制转16)若干例子
- oracle600错误,oracle ora-600 Ktspgsb-1 错误处理案例