2016-09-26 59 views
1

当我用int字段中的字符进行搜索时,它会给出int字段值为零的结果。int字段mysql中的搜索字符类型给出错误结果

select * from table where b = "test" 

列b是int型。获得的结果是b值为零的行。 我该如何避免这种情况?

+1

你如何避免这种情况?不要这样做。 – Drew

+0

你为什么要这样做 - mysql不会让你插入文本到一个int字段中。 –

+0

它是因为用户试图搜索带缺失验证的字符值的整数字段。 – Thejas

回答

1

MySQL有这个小怪癖CAST('some text' AS INT)产生零。它也发生CAST('123some text' AS INT)收益率123

当你做WHERE integer_valued_column = 'text'你的'text'被隐含转换为整数值。所以这就是你观察到的奇怪行为的原因。

你如何避免它? @德鲁是对的。不要这样做。

+0

是否可以,如果我改变这样的查询“select * from table where b =”test“and b!= 0”? – Thejas

+0

你可以做任何你想做的事。但是将整数和文本混合在一起通常不被认为是好的IT实践。 –