select * from esign_contract where task_item_id in ('1635,1636')
这个 sql 为什么能且只能匹配出 task_item_id = 1635 的记录。按我理解'1635,1636'是一个完整的字符串,不应该匹配出 1635 的记录。另外如果 in 关键字会对字符串中有',' (尝试了使用中文逗号,或符号,空格都会有这个效果)做拆分的话,那么也应该匹配出 1636 的结果,但是并没有匹配出来 1636 的结果
版本是 5.7.38-220701-log
1
cheng6563 2023-08-29 13:47:04 +08:00
你 task_item_id 是不是数字类型。。。
|
3
hidemyself 2023-08-29 13:49:13 +08:00
我猜,应该是自动类型转换了。
'1635,1636' 被转换成了 1635 |
4
setsunakute 2023-08-29 13:49:36 +08:00
对于你这种场景,你应该用 find_in_set ,而不是 in
|
6
8355 2023-08-29 13:55:08 +08:00
mysql 隐式转换
https://dev.mysql.com/doc/refman/8.0/en/type-conversion.html SELECT CAST('78,55' AS UNSIGNED) task_item_id 是 int 类型 传入的是字符串类型所以会将字符串转为 int |
7
Dlin OP |