18

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

DB2でこれを実行できる関数は何ですか?

こんな感じだと思いましたが、何も見つかりません。
select * from table where not length(fieldName, 12)

4

3 に答える 3

32

同様の質問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))
于 2013-05-12T19:56:16.553 に答える
29

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

 select * from table where length(fieldName)=10
于 2012-07-05T15:19:02.830 に答える