varchar字段赋值int查询结果不正确

1. 如果mysql中定义了varchar类型的字段,查询时给varchar赋值为int型,可能会出现多条数据的意想不到的情况;

select user_id from t_merchant where status = true and merchant_id = 1

2. 但如果将值定义为字符型,才会出现自己想要的结果。

3. 经过测试,得知数据库的处理方法是:如果查询时varchar字段赋值int型的,就会进行模糊匹配,并且仅匹配以此int值为开始的,并且下一个字符不为数字的所有值。

附上测试数据:

select merchant_id from t_merchant where status = true and merchant_id = 1
结果:
1
1a1855f5eefa8bd11d73b5a693ed3
1bbc4fdc8f60e18bb538247f4381f
1c11e19fa102234e69aea6e084bf0
1c30a5d2583766f32b0add1577c23
1c57015e57dd40afa2810f0b8d28f
1c90269d0627b9c3308cbe09cea2d
1d2873feb17a7c95d26afe72b8947
1df0b3b084d8acfdb6c1ccb922c1c
1f05d1a23225bab27e2c618a77457


select merchant_id from t_merchant where status = true and merchant_id like '1%'
结果:
1
11fa4b5e5b6247ea95b19ac0f23ef
1218ff425a08a56956b448ad333f8
13b680db935ca0d51b8b869bf5ea1
13ebe9af83b2bcd3ee06c81ec352a
151aa891c82223ec6764fd7de6eb9
1528560e096f86a5f7972cb502efc
1a1855f5eefa8bd11d73b5a693ed3
1bbc4fdc8f60e18bb538247f4381f
1c11e19fa102234e69aea6e084bf0
1c30a5d2583766f32b0add1577c23
1c57015e57dd40afa2810f0b8d28f
1c90269d0627b9c3308cbe09cea2d
1d2873feb17a7c95d26afe72b8947
1df0b3b084d8acfdb6c1ccb922c1c
1f05d1a23225bab27e2c618a77457

 

上一篇:莫得标题


下一篇:vue四十四:Vue美团项目之商家详情-导航栏和header布局