- ベストアンサー
日本語の表名、列名の利用について
お世話になっております。 Oracle10g、11gで、できれば日本語の表名、列名を使用しようと思っております。検索してみると、9iあたりでは問題があるようですが、10g、11gでは該当の記述を見つけることができませんでした。 10g、11gでは、表名や列名に日本語を使っても問題はないでしょうか。 関連した情報の場所等をお教えいただければ幸いです。 どうか、よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
テーブルを使用するのも作成するのも面倒がありますが、構文上の問題はありません。というのが、答えになるでしょうか。 表名や列名に日本語文字を使用する場合は、名前を" "で囲う必要があります。制約はただこれだけです。(マニュアルに記載があります。) ただこれだけのことなので、自分で開発したデータベースを、自分で作成したアプリで利用する場合には、何の問題もありません。ただし、日本語とシングルバイトの英文字が混在する場合は注意してください。この場合、英文字の方の大文字小文字をきちんと区別する必要があります。""で囲っていない場合は、総ての名前は大文字変換されて使用されるのですが、囲った場合はこの変換がないからです。 それより、やっかいごとは外からやってきます。 データベースの開発・メンテナンスにsql plusやEMだけを利用しているなら大丈夫ですが、サードパーティー製のソフトを利用している場合は、そのソフトが日本語表名・列名を正しくサポートしていることが必要です。 また、アプリケーションの作成の際に、ライブラリーなどを利用しているのであれば、これらも正しく日本語表名・列名に対応している必要があります。 なぜなら、普通列名や表名を" "で囲うということはしないからです。囲うことによる副作用もありますから、ライブラリーやソフトが日本語文字が混在していることを正しく認識して、日本語の混じっている時だけ正しく" "で囲うという処理が必要で、これは、明らかに特殊な処理ですから。 まぁ、今までの経験からすると、囲わなくても正しく動くことが多いです。が、正式に構文として明記されている以上、動く方が偶然であると認識しておくことは必要でしょう。特に、二バイト目のコードがASCIIコードの特殊文字の文字コードと同じになっているいくつかの文字あたりが鬼門になると思います。 表名も列名もとっても見やすくなり、メンテナンスも楽になります。が、ある程度のリスクを抱えての選択であると言うことは意識しておく必要はあるでしょう。 作法としてやって良いかどうかは、宗教論争の面がありますで、避けることにします。
その他の回答 (1)
- dda167
- ベストアンサー率76% (55/72)
> 表名や列名に日本語を使っても問題はないでしょうか ダブルクォートすれば問題はないようです(結構面倒です)。 ・参考サイト http://homepage3.nifty.com/yamada_ken1/starthp/subpage09.html http://www.shift-the-oracle.com/guideline/multibye-character-objectname.html ・OTN掲示板の参考スレッド http://www.oracle.co.jp/forum/message.jspa?threadID=8006221 # 日本語の表名、列名の問題は宗教論争になりがちで……
お礼
dda167 様 いつも適切なご回答をいただき、感謝しております。 よく理解できました。 MySQLをやりましたときには、5Cコードの問題があり、日本語は絶対ダメと思っていたのですが、Oracleではダブルクォートで問題がない(Oracle内だけでは)のですね。 ありがとうございました。
お礼
mitoneko 様 ご回答いただき、ありがとうございました。 「自分で開発したデータベースを、自分で作成したアプリで利用する場合には、何の問題もありません。」という点。よく理解できました。私の場合は、おかげさまで安心して利用できます。 また、作法としては「宗教論争の面」があるということもわかり、勉強になりました。 的確な回答をいただき、感謝しております。ありがとうございました。