当我用int字段中的字符进行搜索时,它会给出int字段值为零的结果。int字段mysql中的搜索字符类型给出错误结果
select * from table where b = "test"
列b是int型。获得的结果是b值为零的行。 我该如何避免这种情况?
当我用int字段中的字符进行搜索时,它会给出int字段值为零的结果。int字段mysql中的搜索字符类型给出错误结果
select * from table where b = "test"
列b是int型。获得的结果是b值为零的行。 我该如何避免这种情况?
MySQL有这个小怪癖CAST('some text' AS INT)
产生零。它也发生CAST('123some text' AS INT)
收益率123
。
当你做WHERE integer_valued_column = 'text'
你的'text'
被隐含转换为整数值。所以这就是你观察到的奇怪行为的原因。
你如何避免它? @德鲁是对的。不要这样做。
是否可以,如果我改变这样的查询“select * from table where b =”test“and b!= 0”? – Thejas
你可以做任何你想做的事。但是将整数和文本混合在一起通常不被认为是好的IT实践。 –
你如何避免这种情况?不要这样做。 – Drew
你为什么要这样做 - mysql不会让你插入文本到一个int字段中。 –
它是因为用户试图搜索带缺失验证的字符值的整数字段。 – Thejas