MySQL:使用字符串参数搜索数字列
来自工作项目中的代码,实际传参是个枚举,查询的时候,打印sql参数变为了枚举的字面量。对于在用字符串类型去查number时,mysql会把非数字开头的字符串转为0。实际查出来的结果正好满足业务场景,导致缺陷迟迟未被发现。
下面转载自网络。
假设我们在表’order’中有一条id = 1的记录.这个查询:
1 | SELECT * FROM 'orders' WHERE id = 'abc1' |
不会返回提到的记录.但是这个查询:
1 | SELECT * FROM 'orders' WHERE id = '1abc' |
将返回id = 1的记录.这是因为当MySQL将字符串转换为数字’abc1’变为0,但’1abc’变为1.有一种很好的方法可以使MySQL严格搜索具有来自查询的id的记录,即不返回id = 1的记录提到的情况?
最佳答案
怎么样使用:
1 | SELECT * FROM 'orders' WHERE id LIKE '1abc' COLLATE utf8_bin |
甚至
1 | SELECT * FROM 'orders' WHERE STRCMP(id, '1abc') = 0; |
- 本文标题:MySQL:使用字符串参数搜索数字列
- 本文作者:codeday
- 本文链接:https://hr2812.cn/2020/12/14/mysql-use-string-to-search-number-column/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!