为什么mysql查询处理字符串在bigint字段的条件为0(零)?

时间:2017-05-16 13:29:35

标签: mysql

我有一个mysql表

CREATE TABLE `Test`( `ID` BIGINT(20) NOT NULL, `S_ID` BIGINT(20), PRIMARY 
KEY (`Id`) );

ID | S_ID
...|....
1  | 0
2  |121

当我运行MYSQL查询时

Select * from test where S_ID = 'Any_charecter'

返回结果集

ID | S_ID
...|....
1  | 0

请说明为什么会这样?我如何使用MYSQL查询来解决这个问题。

2 个答案:

答案 0 :(得分:0)

好吧,字符串被隐式转换为数字。当字符串以数字开头时,使用此数字。否则它会转换为0。

解决方案1:存储数字时,请勿将它们与字符串进行比较。就那么简单。

解决方案2:将S_ID的数据类型更改为varchar或char。但话又说回来,你为什么要在一个字符串中存储一个数字?在数据库设计中,您应该尽量避免在一列中混合使用多种数据类型。

答案 1 :(得分:0)

192.168.*