我知道'between'运算符包含指定的范围.但在下面的情况下,它的工作方式不同
我有表客户具有以下属性.
customer
{
customername varchar2(30),
custid integer(10,0)
}
Run Code Online (Sandbox Code Playgroud)
询问
select * from customer c where c.customername between 'a' and 'b';
Run Code Online (Sandbox Code Playgroud)
以上查询仅提取数据,以"a"开头的客户名称.但是当我们使用'between'运算符和数字时,两者都是包容性的.任何人都可以向我解释这个行为.
它并没有什么不同.BETWEEN仍然具有包容性.但是你应该记住,编程中的字符串比较比整数比较稍微复杂一点.在数据库中,字符串的排序方式如下:
'a' < 'andy' < 'andy1' < 'anna' < 'b' < 'boris' < 'brian'.
Run Code Online (Sandbox Code Playgroud)
所以between 'a' and 'b'将返回:
'a', 'andy', 'andy1', 'anna', 'b'
Run Code Online (Sandbox Code Playgroud)
但是,由于您没有完全命名的客户,因此'b'您只得到:
'a', 'andy', 'andy1', 'anna'
Run Code Online (Sandbox Code Playgroud)
如果您只想要名称以a或b开头的客户,则应使用SUBSTR:
select * from customer c where SUBSTR(c.customername, 1, 1) between 'a' and 'b';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |