DB2中的通配符

时间:2015-09-08 18:14:49

标签: sql db2 db2-400

我正在使用DB2数据库AS / 400,我正在考虑从字母A结尾的项目表中提取所有项目编号。

SELECT *
FROM NRPDTA.IM
WHERE IMITNO LIKE '%A';

查询返回一个空集。我知道此表中存在项目编号300072A。该列的数据类型设置为character fwiw。什么是语法上缺少什么来解决这个问题?

2 个答案:

答案 0 :(得分:4)

CHARACTER数据类型的值用空格填充到列长度。例如,如果将IMITNO定义为CHARACTER(10),则存储的值实际上为"300072A "。您可能会尝试修改WHERE子句,如下所示:

...WHERE RTRIM(IMITNO) LIKE '%A'

...WHERE IMITNO LIKE '%A %'

答案 1 :(得分:0)

来自documentations

如果LIKE谓词中指定的模式是参数标记,并且使用固定长度字符主变量替换参数标记,则为主变量指定的值必须具有正确的长度。如果未指定正确的长度,则选择操作将不会返回预期的结果。

例如,如果主变量定义为CHAR(10),并且值WYSE%被分配给该主变量,则主机变量在赋值时填充空白。使用的模式是:

'WYSE%     '

数据库管理器搜索以WYSE开头且以五个空格结尾的所有值。如果您只想搜索以'WYSE'开头的值,请为主变量指定值'WSYE%%%%%%'