整数字段与字符在where子句中返回奇怪的输出。

29 浏览
0 Comments

整数字段与字符在where子句中返回奇怪的输出。

我在一个表格的列中拥有一个名为"field_name"的数据类型为tiny int的列。它的值为1和0。我尝试了一个查询语句:

SELECT * from table_name where field_name = 'Y'; 

这个查询结果返回了所有值为零的记录。我不明白查询的执行过程。请帮助我理解这个问题。

0
0 Comments

问题的原因是因为在使用TINYINT字段时,它实际上存储的是整数值(0或1),而不是字符串值('Y'或'N')。因此,当我们想要筛选出值为'Y'的数据行时,不能直接使用myTinyColumn = 'Y'的方式,而应该使用myTinyColumn = 1的方式。

要解决这个问题,我们需要修改查询语句,将字符串值'Y'替换为整数值1。例如,我们可以使用以下查询语句来获取所有值为'Y'的数据行:

SELECT * FROM myTable WHERE myTinyColumn = 1

通过这样的修改,我们就可以正确地筛选出值为'Y'的数据行了。

0
0 Comments

问题的原因是在使用字符类型的字段进行查询时,当将字符串转换为数字时,会变成值为0的数字。因此,返回的结果中包含所有值为0的记录。解决方法是将查询条件中的字符改为对应的数字。具体的解决方法是将查询语句中的'Y'改为1。

这是一个用户在论坛上提出的问题,用户想要根据一个字符类型的字段进行查询,但是得到的结果却是所有值为0的记录。其他用户通过回复解答了这个问题。他们指出,当将字符串转换为数字时,会得到值为0的结果。因此,查询语句中的'Y'被自动转换为0,导致了结果的错误。为了解决这个问题,建议将查询语句中的'Y'改为对应的数字1。用户在得到解答后表示理解了问题的原因,并对回答者表示感谢。

以上是关于一个字符类型字段在查询条件中返回奇怪结果的问题以及解决方法的讨论。在这个问题中,通过将字符转换为对应的数字来解决了查询结果错误的问题。这个解决方法可以帮助其他用户避免类似的错误,并提高查询的准确性。

0