質問する
0

BASE/FIREBIRDのテーブル内のCHARにおける表示の疑問

質問日 2019-08-03 01:57:51 +0200

雪花 のGravatar画像

updated 2019-08-07 09:54:51 +0200

nogajun のGravatar画像

以前からの疑問なのですが、テーブル作成後の表示がおかしい気がしているのです。

これはバグなのか?仕様なのか?仕様なら何か理由があるのか? そのあたりを明確に理解しておきたくて質問します。

以下はテーブルの作成画面です。比較の為にフィールドを4種類作成しています。

全てテキストです。

  • CHAR: 3ワード
  • VARCHAR: 3ワード
  • CHAR: 5ワード
  • VARCHAR: 5ワード

画像の説明

これにデータを入力すると以下の4つの画像のようになります。

画像の説明 画像の説明 画像の説明 画像の説明

つまりCHARで設定した時だけ、 設定ワード数の 3倍の空白 が必ず後ろ側に 追加 で出現するのです。

全てに2Wだけ入力すると以下の4つの画像のようになります。

画像の説明 画像の説明 画像の説明 画像の説明

これは何故ですか?

edit retag flag offensive close merge delete

1 Answer

1

回答日 2019-08-03 03:00:04 +0200

himajin100000 のGravatar画像

updated 2019-08-03 12:03:00 +0200

3倍の空白がつくのではなく、UTF-8では1文字あたり最大4バイトとると考えて、4 * 3bytes = 12bytesになるまで補充されているとの情報あり。Firebird側が標準から逸脱した挙動しているとの見解あり。あるいはFirebird用のsdbcドライバがVARCHARとして解釈すべきなのか。未検証。

https://bugs.documentfoundation.org/s...

HSQLDBのデータを作ってみたところ、こちらは文字数換算のバイト数ではなく、文字数そのものになっているようです。

edit flag offensive delete link もっと

Comments

ありがとうございます

HSQLDBのデータを作ってみたところ、 こちらは文字数換算のバイト数ではなく、文字数そのものになっているようです。

いずれにしても、リブレ& FIREBIRD のバグ なのですね。 これですっきりしました。

何が原因なのかわかっていないと いつまでも 自分の至らなさだと考えてしまう ので、 無駄に調べ続ける時間が増えてしまいます。

とても助かりました。

雪花 のGravatar画像雪花 ( 2019-08-03 13:33:17 +0200 )edit
ログイン/サインアップして回答する

質問ツール

1 follower

Stats

Asked: 2019-08-03 01:57:51 +0200

Seen: 32 times

Last updated: Aug 07