bug天天有,这个很特别:2个看起来完全一样的sql,查询结果却不一样
先看图
把mysql控制台的sql粘贴到这里
mysql> select * from dms_dictionary where code = "config_invoice_rule_time";
+--------------------------+-------------+-------+------+------+---------------------+---------------------+--------------------------------------------------------+
| code | parent_code | level | type | name | create_time | modify_time |
+--------------------------+-------------+-------+------+------+---------------------+---------------------+--------------------------------------------------------+
| config_invoice_rule_time | 0 | 1 | 11 | 6 | 2019-05-09 17:28:18 | 2019-05-09 17:28:18 |
+--------------------------+-------------+-------+------+------+---------------------+---------------------+--------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select * from dms_dictionary where code = "?config_invoice_rule_time";
Empty set (0.00 sec)
mysql> select * from dms_dictionary order by create_time desc limit 0,1;
+--------------------------+-------------+-------+------+------+---------------------+---------------------+--------------------------------------------------------+
| code | parent_code | level | type | name | create_time | modify_time |
+--------------------------+-------------+-------+------+------+---------------------+---------------------+--------------------------------------------------------+
| config_invoice_rule_time | 0 | 1 | 11 | 6 | 2019-05-09 17:28:18 | 2019-05-09 17:28:18
+--------------------------+-------------+-------+------+------+---------------------+---------------------+--------------------------------------------------------+
1 row in set (0.01 sec)
看得出,第2个sql "?config_invoice_rule_time" 存在1个“?”。
解决问题的过程:
2条sql完全一样,确实没啥特殊的地方。
Notepad++中,打开:显示所有符号,没看出问题
select * from dms_dictionary where code = "config_invoice_rule_time";
select * from dms_dictionary where code = "config_invoice_rule_time";
select * from dms_dictionary order by create_time desc limit 0,1;
用第1个sql的“config_invoice_rule_time” 粘贴到第2个sql“config_invoice_rule_time”,显示查询正常。
说明,第2个sql的“config_invoice_rule_time” 有特殊的地方。
突然想到,可能是Unicode之类的问题。
通过工具
http://www.bejson.com/convert/unicode_chinese/
显示:
select * from dms_dictionary where code = "config_invoice_rule_time"%3b%0a
select * from dms_dictionary where code = "\u2062config_invoice_rule_time"%3b
第2个sql多了一个特殊字符“\u2062”
找资料了解了下,这是Unicode特殊字符,叫这个名字“invisible times”
详细解释