我试图找出如何编写一个SQL语句,它将获取字符串长度不超过12个字符的字段。如果它们是10个字符,我只想抓取字符串。
DB2中可以执行哪些功能?
我认为它会是这样的,但我找不到任何东西。
select * from table where not length(fieldName, 12)
答案 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;的表中选择*;