文字列の長さが12文字ではないフィールドを取得するSQLステートメントを記述する方法を見つけようとしています。文字列が10文字の場合にのみ取得します。
DB2でこれを行うことができる機能は何ですか?
私はそれがこのようなものになるだろうと思ったが、私はそれに何も見つけることができません。select * from table where not length(fieldName, 12)
これにより、10文字の文字列(fieldName列)を持つレコードが取得されます。
select * from table where length(fieldName)=10
同様の質問から 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))