0

プログラムで、関数 RPAD() を使用して、DB2 db からのデータをフォーマットしました。ある例では、値は Ãmber でした。次の関数:

RPAD('Ãmber',10,' ')

9文字のみを提供します。「ã」の ASCII 値は 195 です。この動作の理由がわかりません。誰かが自分の経験を共有できますか。ありがとう

4

1 に答える 1

1

デフォルトでは、DB2 は Ã の長さを 2 と見なします。これは、おそらく文字数ではなくバイト数をカウントしているためです。

values(LENGTH('Ãmber'))
 6

LENGTHおよび他の多くの関数でオーバーライドできます

values(LENGTH('Ãmber', CODEUNITS16))
 5

残念ながら、RPADはこのようなパラメーターを取りません。これは、機能自体のメリットではなく、Oracle との互換性のために機能が追加されたためではないかと推測しています。

独自の RPAD 関数をストアド プロシージャまたは UDF として記述したり、これが必要な唯一の場所である場合は CASE ステートメントで処理することができます。

于 2013-01-08T19:49:37.400 に答える