我正在使用DB2数据库AS / 400,我正在考虑从字母A
结尾的项目表中提取所有项目编号。
SELECT *
FROM NRPDTA.IM
WHERE IMITNO LIKE '%A';
查询返回一个空集。我知道此表中存在项目编号300072A
。该列的数据类型设置为character
fwiw。什么是语法上缺少什么来解决这个问题?
答案 0 :(得分:4)
CHARACTER
数据类型的值用空格填充到列长度。例如,如果将IMITNO
定义为CHARACTER(10)
,则存储的值实际上为"300072A "
。您可能会尝试修改WHERE
子句,如下所示:
...WHERE RTRIM(IMITNO) LIKE '%A'
或
...WHERE IMITNO LIKE '%A %'
答案 1 :(得分:0)
如果LIKE
谓词中指定的模式是参数标记,并且使用固定长度字符主变量替换参数标记,则为主变量指定的值必须具有正确的长度。如果未指定正确的长度,则选择操作将不会返回预期的结果。
例如,如果主变量定义为CHAR(10)
,并且值WYSE%
被分配给该主变量,则主机变量在赋值时填充空白。使用的模式是:
'WYSE% '
数据库管理器搜索以WYSE
开头且以五个空格结尾的所有值。如果您只想搜索以'WYSE'
开头的值,请为主变量指定值'WSYE%%%%%%'
。