这是TB_USER表中的数据
USER_USERID
--------------
A111
A9999
ADMIN
AHO
AHO2
AHO3
AHO4
...和TB_USER表的架构是
COLUMN_NAME DATA_TYPE DATA_LENGTH
-------------------- --------- -----------
USER_USERID VARCHAR 15
当我执行以下SELECT语句时:
SELECT USER_USERID FROM TB_USER WHERE USER_USERID = 'ADMIN '
...和
SELECT USER_USERID FROM TB_USER WHERE USER_USERID = 'ADMIN'
DB2在
之后检索相同的输出USER_USERID
--------------
ADMIN
如何解决这个问题?
答案 0 :(得分:4)
答案 1 :(得分:3)
此行为与设计一致 - 字符串比较的等式谓词不会考虑尾随空格。正如Rakesh所说,LIKE谓词将考虑尾随空格。这取决于你应该使用的用例。
相关文件:
DB2 9.7 Infocenter - Assignments and comparisons
“当比较不等长度的字符串时,比较是使用较短字符串的逻辑副本进行的,该字符串在右侧填充,空白足以将其长度扩展为较长字符串的长度。这个逻辑扩展是针对所有字符串完成的,包括那些标记为FOR BIT DATA的字符串。“
DB2 9.7 Infocenter - LIKE predicate
“LIKE谓词搜索具有特定模式的字符串。模式由字符串指定,其中下划线和百分号可能具有特殊含义。模式中的尾随空白是模式。 “
答案 2 :(得分:1)
而不是
SELECT USER_USERID FROM TB_USER WHERE USER_USERID = 'ADMIN '
使用强>
SELECT USER_USERID FROM TB_USER WHERE USER_USERID like 'ADMIN '