文字列の長さが12文字ではないフィールドを取得するSQLステートメントを作成する方法を見つけようとしています。10文字の場合にのみ文字列を取得したいと思います。
DB2でこれを実行できる関数は何ですか?
こんな感じだと思いましたが、何も見つかりません。
select * from table where not length(fieldName, 12)
同様の質問DB2から-テーブルフィールドの値の長さを見つけて比較します-LENGTHは列定義の長さを返すため、RTRIMを追加します。これは正しいはずです:
select * from table where length(RTRIM(fieldName))=10
UPDATE 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))
これにより、10 文字の長さの文字列 (fieldName 列) を持つレコードが取得されます。
select * from table where length(fieldName)=10