2012-07-05 291 views
13

我想知道如何编写一个SQL语句,它将抓取字符串不是12个字符长的字段。我只想抓住字符串,如果他们是10个字符。确定DB2文本字符串长度

什么函数可以在DB2中做到这一点?

我想这将是这样的事情,但我找不到任何东西。
select * from table where not length(fieldName, 12)

+0

等待 - 您要抓取_rows_,其中包含数据a **特定**列('字段')的长度为10个字符,或者您想抓取**未知* *所有行的列,其中列中的所有值(或列的名称)的长度均为10个字符? – 2012-07-05 16:25:07

+0

我想从一个id号码列中获取所有行。有些身份证号码是10位数字,有些是9位数字,有些是12位数字。除了12位数字以外,我想要所有的身份证号码。 – Frantumn 2012-07-05 16:53:21

+0

该列实际上是数字类型,还是在Id中使用数字字符?如果它实际上是一个数字列,只需进行简单的数字比较即可。如果它是一个包含数字的字符串,请不要有前导零... – 2012-07-05 17:17:04

回答

21

这会抢用绳子长度为10个字符长的记录(在字段名列):

select * from table where length(fieldName)=10 
+0

另请检查:http://www.ibm.com/developerworks/data/library/techarticle/dm-0705nair/ - 确定字符串长度有时可能会非常棘手。 – 2012-07-05 15:23:52

22

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

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

这是诀窍!它获得了OP所要求的字符串的实际长度,而不是列的长度。 – 2013-08-26 19:10:57

+1

这个答案是正确的 – numsu 2016-08-05 05:39:53