where子句中带有字符的整数字段返回奇怪的输出

时间:2014-09-10 07:22:49

标签: mysql

我在数据类型为tiny int的表中有一列。它的值为1和0.我尝试了一个选择查询

SELECT * from table_name where filed_name = 'Y'; 

这导致我所有记录为零的记录。我不明白查询执行是如何发生的。请帮我理解这个

2 个答案:

答案 0 :(得分:0)

TINYINT不会存储'Y''N'等字符串值,而是存储整数01。如果您希望所有数据行都具有值' Y'你必须按1(整数)例子过滤:

SELECT * FROM myTable WHERE myTinyColumn = 1

答案 1 :(得分:0)

string转换为number时,它将变为值0。 这就是为什么你得到价值0

的所有记录
SELECT * from table_name where filed_name = 'Y';

这里' Y'自动转换为0

改为使用

SELECT * from table_name where filed_name = 1;