Sql 确定DB2文本字符串长度
我试图找出如何编写SQL语句来获取字符串长度不超过12个字符的字段。我只想抓取字符串,如果它们是10个字符 在DB2中,什么函数可以做到这一点 我想应该是这样的,但我找不到任何东西。Sql 确定DB2文本字符串长度,sql,db2,Sql,Db2,我试图找出如何编写SQL语句来获取字符串长度不超过12个字符的字段。我只想抓取字符串,如果它们是10个字符 在DB2中,什么函数可以做到这一点 我想应该是这样的,但我找不到任何东西。 select*from table where not length(字段名,12)这将获取具有10个字符长字符串(在字段名列中)的记录: select * from table where length(fieldName)=10 从类似的问题-添加RTRIM,因为长度将返回列定义的长度。这应该是正确的: s
select*from table where not length(字段名,12)
这将获取具有10个字符长字符串(在字段名列中)的记录:
select * from table where length(fieldName)=10
从类似的问题-添加RTRIM,因为长度将返回列定义的长度。这应该是正确的:
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))
我们主要写以下声明
从表格中选择*长度(ltrim(rtrim(字段))=10 另外请检查:-确定字符串长度有时可能很棘手。等等-是否要获取特定列(“字段”)包含的数据长度为10个字符的行,还是要获取所有行的未知列,其中列中的所有值(或列的名称)10个字符长吗?我想从id号列中获取所有行。有些身份证号码是10位数,有些是9位数,有些是12位数。我想要除12位数字以外的所有数字。该列实际上是数字类型,还是在Id中使用数字字符?如果它实际上是一个数字列,只需进行简单的数字比较。如果它是一个包含数字的字符串,请不要有前导零…它是一个文本字段。很抱歉只是碰巧它们暂时都是数字。是的,这个字段是文本类型的。好吧,一个自然键id字段,文本,它(当前)只包含数字是可以的-期望在某个时候你可能有其他字符。我只是不建议允许前导零,因为您的用户可能没有意识到它们的重要性。然而,在一般情况下,大卫的答案应该是正确的。这就成功了!它得到的是字符串的实际长度,而不是列的长度。谢谢,很好的提示!这是不对的。它将返回字段长度,而不是字符长度。欢迎使用Stackoverflow!!如果你能在回答任何问题之前回答,那就太好了。谢谢。上面的答案是不正确的。这对我有用