Re: 問題ID : 12154

この質問の投稿一覧へ

なし Re: 問題ID : 12154

msg# 1.1
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2022-2-18 8:50
arashi1977  長老 居住地: 広島  投稿数: 1715
引用:
DBサーバーのエンコードがUTF8の場合は1文字3バイトなので「田中」は格納できないのではないかと思ったのですが、いかがでしょうか?
それはデータベース作成時に決めることなので、この問題とは直結しないですね。例えばPostgreSQL( https://www.postgresql.jp/document/9.4/html/sql-createdatabase.html )なら
CREATE DATABASE OSSDB WITH ENCODING = 'UTF8'
みたいな感じです。

で、それとは別の話として「データ型」があります。この問題ではCHARACTER型の話をしていますが、CHARACTER型は「文字列型」であり、意識するのは「文字」です。バイト数ではありません。
データ型の話題の時に「(データベースの)エンコーディングがもし違ったら」と言う話をしてたら複数の正解(もしくは正解が存在しない)ってことになりかねないので、そこは切り離して考えたほうが良いかなと思います。
(ちなみに、こういう仮定をするなら「クライアントの文字エンコーディングがDBと異なっていたら」とかいくらでもできちゃうんですよね…特に条件がない場合は「格納できる前提」かなと)

ですので「CHARACTER(4)は”文字”を4つ格納する。格納しようとしたデータが4より少ない場合は空白でパディング(空いた場所を埋める)する」と言うデータ型の話だという観点の問題だと捉えると良いです。

ちなみにですが、UTF-8には「4バイト文字」も存在するので、データベースのエンコーディングを決める時には注意が必要です。MySQLだと「utf8」と「utf8mb4」の違いですね。(PostgreSQLは9.0の時点で4バイト文字OK)

ところで…
引用:
また、「田中」は2文字なので、できれば別の例にしてほしいです。
ここの意図がよくわからなかったのですが、「2文字の場合は空白2文字が後ろについて結果的に4文字格納される」と言うことが理解できているかの確認の意味もあって2文字なんだと思っているのですが、2文字だと何か問題あるのでしょうか?

投稿ツリー

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.