首页 > 解决方案 > 为什么 db2 中的 IN 子句在我的数据库查询中不起作用

问题描述

也许你们中的一些人会知道出了什么问题。解释为什么IN当我有一个字符串时该子句在 DB2 中不起作用。例如:

WHERE CODE IN ('123', '234', '345')

不返回任何东西。但是当我在开头放一个数字时,例如0:```

WHERE CODE IN (0, '123', '234', '345')

突然,对于IN子句中指定的所有值,开始返回数据。
魔法。我不知道发生了什么事。
请帮忙。

标签: sqldb2

解决方案


我可以想象如果你code在哪里有一串数字会发生这种情况。而且,它包含以下值:

00123
123.0

在这种情况下,值作为字符串,比较是作为一个字符串,没有直接匹配。

只需向列表中添加一个数字即可将IN列表更改为数字。如果你有类似的东西'abc',你会得到一个类型转换错误。

然后将转换更改为数字。并且当转换为数字时,某些字符串(与字符串不匹配)可能会与数字匹配。


推荐阅读