お世話になります。
現在、Oracle8i を使っています。会社で、社員情報メンテナンス表を作っているんです。社員番号を主キーとして扱っています。
そのテーブルを Java を使って扱っているんですが、この社員番号を検索して、帰ってくる値が、登録(INSERT 文) の時の値と違います。全く違うんではなく、見た目は一緒ですけど、コンピュータで扱うと違うという返事が返ってきます。
具体的にいうと、1 で登録した番号を、SELECT 文で返ってきた値を Java で 1 と同じか?と聞いてみると、違うとコンピュータが返します。僕のプログラムがおかしいのか?と思い、家に返って ほかのDB を使って、試したところちゃんとできました。
Java のプログラムを使って、DB からかえってきた値をコンソール画面に表示したら、ちゃんと「 1 」と表示されます。しかし、その値が、「 1 」と等しいか? Javaで調べるプログラムを作ってみると、違うという答えが返ってきます。
誰かわかる方は、ご返事ください。よろしくお願いします。
No.5ベストアンサー
- 回答日時:
>型は、問題ないと思います。
char 型でやっております。(varchar2でなくて) char ということは固定長文字列ですよね?
固定長の場合、スペース埋めされますが、それは考慮されてます?
例えば、char(3)の列に、"1"を代入すると、データベース内部では
後ろに2つのスペースが埋められ "1__"(_はスペース)という形で
保存されます。
それを取り出して元の変数と比較すると
"1" と"1__"の比較なので当然等しくはならないはずですが…。
どうもありがとうございます。
そうなんですか!じゃ、それが問題だったんですね。
char 型の場合、空白部分がスペースで埋め尽くされるなんてことは、思いもよりませんでした。
すみませんでした。単純な事だったんですね。おかげさまで、疑問が解けました。これからの仕事に役立てたいと思います。
これからは、ここで、聞かなくても良いぐらい勉強します。
どうもありがとうございました。
No.4
- 回答日時:
"1" と等しいか?
の部分ですが、まさか
if (data == "1") {
}
なんてやってないですよね。
JavaのString型だとしたら、
if (data.equals("1")) {
}
と書きます。
これは Java の基本中の基本です。
ご返事ありがとうございます。
ご指摘のような方法では、やっていません。
ちゃんとした方法で、やっています。
しかし、他の方法で、プログラムするやり方を見つけ、一応問題は解決しました。どうもありがとうございます。
家の postgreSQL では、ちゃんと動いたんですが。なんでなんでしょう?オラクル接続は、少し複雑ですね。
どうもありがとうございます。またの機会によろしくお願いします。
No.3
- 回答日時:
JavaにSingleやDoubleはないですね。
VBと混ざりました。floatとdoubleですね。
どうもご返事ありがとうございます。
そのあたりは、しっかりとやっています。
どうも、会社のパソコンの調子がおかしいような気がするんですが。
処理をしていても、飛んでしまう箇所があるので。
2度のご回答どうもありがとうございます。では、またの機会に。
No.2
- 回答日時:
フィールドの値を、SingleやDoubleの変数に入れて、それを1と同じかという判定をしていませんか?
浮動小数は丸め誤差が発生するのでイコールで比較すると一致しない場合があります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- Java Java 南京錠 2 2023/02/04 11:46
- スマートフォン・携帯電話 新規発行された格安SIMでLine登録しようとすると、その番号で既に登録されている! 2 2022/12/22 15:34
- X(旧Twitter) 【至急】twitterを乗っ取られたのでしょうか? 1 2022/09/08 02:34
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Yahoo!メール Yahooアカウントにログインできなくなって困っています。 2 2023/05/16 02:28
- IT・エンジニアリング プログラマの仕事内容 4 2022/08/13 00:34
- Java Java モンスターブリーダー 1 2023/02/05 09:44
- 運輸業・郵便業 郵便番号4ケタ「8790」の送り先に、通常の郵便番号で送るとどうなりますか? 3 2023/01/16 15:00
- アルバイト・パート 欠勤連絡のため会社に電話をしても誰も出ないとき、どうすればいいですか? 2 2022/04/03 10:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessで別テーブルの値をフォ...
-
[Access]異なるレコード間の文...
-
Accessでのレコード存在チェック
-
vba 直前の操作はキャンセルさ...
-
電話番号の局番と住所の検索に...
-
質問です。 下記のテーブルとデ...
-
条件をつけて日付の古い行を抜...
-
【アクセスVBA】テーブルにフィ...
-
Recordset.FindFirstについて
-
最新の日付とその金額をクエリ...
-
アクセスで「空き番」の確認
-
Oracleでの文字列連結サイズの上限
-
GROUP BYを行った後に結合した...
-
SQL文で右から1文字だけ削除す...
-
MERGE文を単体テーブルに対して...
-
レコードが存在しなかった場合
-
select句副問い合わせ 値の個...
-
GROUP BYを使ったSELECT文の総...
-
ファイル書込みで一行もしくは...
-
ADO VBA 実行時エラー3021
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessで別テーブルの値をフォ...
-
access 自動採番 年が変わる...
-
最新の日付とその金額をクエリ...
-
Accessでのレコード存在チェック
-
アクセスで「空き番」の確認
-
【アクセスVBA】テーブルにフィ...
-
[Access]異なるレコード間の文...
-
access 自動採番 「10-AA-000...
-
Accessで日付が変わると番号が...
-
【Access】選択クエリのグルー...
-
Access:抽出して、色をつけたい。
-
条件をつけて日付の古い行を抜...
-
質問です。 下記のテーブルとデ...
-
vba 直前の操作はキャンセルさ...
-
【SQL】existsでの商演算
-
Access 文字+年ごとの自動採番
-
sqlで質問です。 Aテーブルの登...
-
ACCESSでの行番号の自動採番
-
Accessで自前の自動採番処理で...
-
主キーの選び方
おすすめ情報