确定DB2文本字符串长度

时间:2012-07-05 15:16:54

标签: sql db2

我试图找出如何编写一个SQL语句,它将获取字符串长度不超过12个字符的字段。如果它们是10个字符,我只想抓取字符串。

DB2中可以执行哪些功能?

我认为它会是这样的,但我找不到任何东西。
select * from table where not length(fieldName, 12)

3 个答案:

答案 0 :(得分:29)

从类似问题DB2 - find and compare the lentgh of the value in a table field - 添加RTRIM,因为LENGTH将返回列定义的长度。这应该是正确的:

select * from table where length(RTRIM(fieldName))=10

更新27.5.2019:可能在较旧的db2版本上,LENGTH函数返回列定义的长度。在db2 10.5上,我尝试了该函数,它返回数据长度,而不是列定义长度:

select fieldname
, length(fieldName) len_only
, length(RTRIM(fieldName)) len_rtrim
from (values (cast('1234567890  ' as varchar(30)) )) 
as tab(fieldName)

FIELDNAME                      LEN_ONLY    LEN_RTRIM
------------------------------ ----------- -----------
1234567890                              12          10

可以使用以下术语来测试:

where length(fieldName)!=length(rtrim(fieldName))

答案 1 :(得分:24)

这将获取包含10个字符长的字符串(在fieldName列中)的记录:

 select * from table where length(fieldName)=10

答案 2 :(得分:-1)

通常我们在下面的语句中写 从长度(ltrim(rtrim(field)))= 10;的表中选择*;