DB2自动修剪尾随空格

时间:2009-10-20 04:11:01

标签: sql db2

这是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   

如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

您应该使用RTRIMTRIM功能。

SELECT USER_USERID FROM TB_USER WHERE RTRIM(USER_USERID) = 'ADMIN'

答案 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 '