2012-07-05 296 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