use*_*598 3 sql sql-server wildcard string-comparison
假设我有一个看起来像这样的表:
Id | Name | Age
=====================
1 | Jose | 19
2 | Yolly | 26
20 | Abby | 3
29 | Tara | 4
Run Code Online (Sandbox Code Playgroud)
我的查询语句是:
1)Select * from thisTable where Name <= '*Abby';
它返回0行
2)Select * from thisTable where Name <= 'Abby';
返回包含 Abby 的行
3)Select * from thisTable where Name >= 'Abby';
返回所有行 // 第 1-4 行
4)Select * from thisTable where Name >= '*Abby';
返回所有行;// 第 1-4 行
5)Select * from thisTable where Name >= '*Abby' and Name <= "*Abby";
返回 0 行。
6)Select * from thisTable where Name >= 'Abby' and Name <= 'Abby';
返回与 Abby 的行;
我的问题:为什么我得到这些结果?通配符对查询结果有何影响?如果条件是这样,为什么我得不到任何结果Name <= '*Abby'?
仅当您使用运算符时才解释通配符LIKE。
因此,当您尝试与字符串进行比较时,它将按字面意思处理。因此,在比较中使用字典顺序。
1) 之前没有字母*,因此没有返回任何行。
2)A是字母表中的第一个字母,所以其余的名字都比Abby大,只有Abby等于它自己。
3) 与 2) 相反
4) 参见1)
5) 参见 1)
6) 该条件等价于Name = 'Abby'。
| 归档时间: |
|
| 查看次数: |
11937 次 |
| 最近记录: |