web-dev-qa-db-ja.com

DB2テキスト文字列の長さを決定する

文字列の長さが12文字ではないフィールドを取得するSQLステートメントを記述する方法を見つけようとしています。文字列が10文字の場合にのみ取得します。

DB2でこれを行うことができる機能は何ですか?

私はそれがこのようなものになるだろうと思ったが、私はそれに何も見つけることができません。
select * from table where not length(fieldName, 12)

13
Frantumn

これにより、10文字の文字列(fieldName列)を持つレコードが取得されます。

 select * from table where length(fieldName)=10
26
david a.

同様の質問から DB2-テーブルフィールドの値の長さを見つけて比較する -LENGTHが列定義の長さを返すため、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))
29
Robert Lujo