Mysql - 应用于String的关系运算符

时间:2015-05-08 09:00:37

标签: mysql

有人可以解释关系运算符如何应用于MySQL数据库中的字符串值。

下面是我在MYSQL中的输入表

+--------------+
| employeeName |
+--------------+
| emp41        |
| Emp1         |
| Emp2         |
| Emp3         |
| Emp4         |
| Emp5         |
| Emp6         |
| Emp7         |
| Emp8         |
| Emp9         |
| Emp10        |
| Emp11        |
| Emp12        |
| Emp13        |
| Emp14        |
| Emp15        |
| Emp16        |
| Emp17        |
| Emp18        |
| Emp19        |
| Emp20        |
| MGR1         |
| MGR2         |
| MGR3         |
| MGR4         |
| MGR5         |
| MGR6         |
| MGR7         |
| MGR8         |
| MGR9         |
| MGR10        |
| Emp31        |
| Emp32        |
| Emp33        |
| Emp34        |
| Emp35        |
| Emp36        |
| Emp37        |
| Emp38        |
| Emp39        |
| Emp40        |
+--------------+

以下是我试过的查询

select * from Employee where employeeName<'emp41';

以下是结果

+--------------+
| employeeName |
+--------------+
| Emp1         |
| Emp2         |
| Emp3         |
| Emp4         |
| Emp10        |
| Emp11        |
| Emp12        |
| Emp13        |
| Emp14        |
| Emp15        |
| Emp16        |
| Emp17        |
| Emp18        |
| Emp19        |
| Emp20        |
| Emp31        |
| Emp32        |
| Emp33        |
| Emp34        |
| Emp35        |
| Emp36        |
| Emp37        |
| Emp38        |
| Emp39        |
| Emp40        |
+--------------+

很明显,它不是基于ASCII值。

1 个答案:

答案 0 :(得分:0)

如果关系运算符将字符串与数字进行比较,MySQL将尝试将字符串转换为数字。如果将timestamp列与字符串或数字进行比较,它将尝试将字符串/数字转换为时间戳。如果它不能这样做,它会将时间戳值转换为字符串或数字。

将TIME和DATE列与其他值进行比较。

但您仍然可以使用&#39;它将字符串相互比较,例如,SELECT 'bar' < 'foo'将评估为true,因为&#39; b&#39;来自&#39; f&#39;在角色整理中。

这取决于 characterset 整理

这可以在您的查询中解释如下:

  

E出现在字符集中的M之前,这意味着MGR值不会被显示出来。   每个字母继续这样,Emp总是相等的,所以它将继续数字。

     

0到4评估为true,但是5-9不胜,这就是你错过emp 5-9值的原因。

     

Emp值的其余部分将显示出来,例如,Emp1&lt; Emp4(1)

您可能需要查看以下参考资料: