- - PR -
日本語のテーブル名・列名に対するSQL文について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-11-18 01:42
お世話になってます。
現在、ASP.NET/ODP.NETでWebアプリの開発を行っています。 SQLの発行で「式がありません」というOracleエラーが出て困っています。 この現象が起きたのは、 Windows2003Serverで動かした時に起きました。 今まで、テスト機としてWindows2000Serverで動かしていたんですが、 問題なく動いていました。 色々調べた結果、SQLに日本語が入っていると起きるようです。 例)SELECT 項目1,項目2 FROM テストテーブル 例の様なSQLを発行すると文字コードが原因でエラーになるみたいなのですが、 このSQLを SELECT "項目1","項目2" FROM "テストテーブル" 2重引用符で囲むと2003Serverでも動かせました。 そこで、質問ですが、 1.2000Serverと2003Serverで同じSQLなのになぜ、動きが違うのか? 2.2003Serverで2重引用符を付けなくても発行できるのか? 3.そのやり方はどうするのか? ご存知の方、どうか教えてください。 宜しくお願いします。 | ||||||||
|
投稿日時: 2004-11-18 11:40
既に対処されたようですが、Oracleだと日本語は2重引用符で囲む必要があります。
囲まなくても正常に動作する場合がありますが、それは「たまたま正常に動作している」に過ぎません。 ですので根本的な解決方法としては「日本語名称を2重引用符で囲む」となります。 | ||||||||
|
投稿日時: 2004-11-18 13:19
ご返事ありがとうございます。
私も色々調べて、Oracleに聞いてみても仕様だといわれました。 気になるのは、 >囲まなくても正常に動作する場合がありますが、それは「たまたま正常に動作している」に過>ぎません。 たまたま正常動作してるとは、どういうことなのでしょうか。 そこの説明とか分かる人いますか? | ||||||||
|
投稿日時: 2004-11-18 20:36
この問題は、Oracle9iから対応されてるのでしょうか?
| ||||||||
|
投稿日時: 2004-11-19 19:37
質問の前にマニュアルを確認しましょうよ。
日本語はアルファベット文字ではないので、引用識別子にする必要があります。 「たまたま」動作するとはどういうことかといわれても、「運よくできたんだよ」以上のことを説明できる人はいないでしょう。たまたま問題がある文字が使われていなかったので適切に解釈してもらえたとか。。。 『対応されている』というのは、何がどういう状態になっていることを『対応されている』とするのでしょう?Oracle6の頃から使っている私としては、「名称に日本語は使わない」は常識であり、使用者の方で対応するのが普通なんですけど。。。 また、『9iから』という表現も気になりますね。今は8i以前をお使いですか?8iはWindows 2003 Serverに非対応ですが、その辺はどうなんでしょう? _________________ | ||||||||
|
投稿日時: 2004-11-19 20:50
>Oracle6の頃から使っている私としては、「名称に日本語は使わない」は常識であり
私としては、Oracleに限らず、データベーステーブル、ビューには 日本語を使わないようにしています。 Oracle以外を含めると常識とはいえないとは思いますが、 (Oracleならば常識) でも、ミスを減らすには、英語以外使用したくないですね。 どうせ、列名がそのままユーザーに表示できる項目ヘッダーとできる 例も少ないし。(マスターコードが絡むと、列名をそのまま ユーザー表示項目のヘッダーとするのは難しいと思っています。) | ||||||||
|
投稿日時: 2004-11-19 21:17
『対応されている』と『使うのがよい』は違いますね。
たとえば、VS2003.NET/C#で変数等を日本語にしても動きますが(たまたま?仕様?)、とても使う気にはなりません。
| ||||||||
|
投稿日時: 2004-11-19 21:29
仕様です。unicodeですから。 _________________ |