• ベストアンサー

Javaでoracleから抽出したデータについてnullのもの

Javaでoracleから抽出したデータについてnullのもの タイトルの通りですが null値のデータを空文字で抽出したいのですが 現在resultsetにデータ格納して JavaはgetString("項目名")で抽出しています そうするとnull値ではなく「null」という 文字列でかえってきます stringですので当たり前かもですが 「null」ではなく「」という全く空のデータを 取得したい場合 Javaでget~で取得できるものがあれば 教えてください

  • -0-y
  • お礼率75% (59/78)
  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.1

> そうするとnull値ではなく「null」という文字列でかえってきます 手元にOracleが無いので確認できませんが、null値が返ってきていて、それが表示上「null」となっているのだと思います。 下記の様にJavaでnullを標準出力などに出すと「null」と表示されます。 ----------------------- String str = null; System.out.println(str); // 「null」と表示される。 ----------------------- null 値を空文字列に変換したいのであれば、「変数 != null ? 変数 : ""」の様にすれば良いかと。 ----------------------- String str = resultSet.getString("項目名"); System.out.println(str != null ? str : ""); // 空の場合は空行を表示 -----------------------

-0-y
質問者

お礼

ありがとうございます。 やはり下手に関数などを作るより、そのほうがいいですよね。 ちなみに下記の構文はあまり使ったことないのですが、 IF文の別の書き方みたいなものですよね。 一応確認させてください。 str != null ? str : "" strがnullではない場合、strを返す。nullの場合は""でということですよね 助かりましたありがとうございます

関連するQ&A

  • getStringの値がNULLの時の処理

    DB:SQL Server 2005 JDBCを使ってデータベースへアクセスし、SQL発行して結果をResultsetに格納、getStringで各項目の値を取得するところまでは確認できています。 外部結合したテーブルを参照していおり、getString()でnullを取得した場合にjava.lang.NullPointerExceptionが返ってエラーとなってしまいます。 回避策はあるのでしょうか? 抜粋したソースを下記に記します。 -- test.jsp -- <% ResultSet rs = db.executeQuery(sql); while(rs.next()){ String disp_object = rs.getString("object"); if(disp_object == null) disp_object="---"; } %> <tr>Object</tr> <tr><%=disp_object%></tr>

    • ベストアンサー
    • Java
  • javaのResultSetについて

    javaのResultSetについてですが、getStringでSQL名を選択して取得するのですが、変数で指定した場合は、文字列と判断され取得できないのでしょうか? 例えばSQLの列名の「test」を取得したい場合は、「rs.getString(test)」と記述しますが、 以下のように変数に置き換えて、取得しようすると、 String test2 = "test"; rs.getString(test2)というようにすると、カラムがありませんとエラーが返ってきます。 変数に置き換えて実行したいのですが、何か良い方法がないかご教授いただけますでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • SQLServerのNULLのデータと空文字のデータを抽出する方法を教

    SQLServerのNULLのデータと空文字のデータを抽出する方法を教えてください! いつもお世話になっております。 下記のコードで、空文字とNULLのデータがないときはデータが抽出できました。 どなたかご教授お願いいたします! ==開発環境== SQLServer2000 VB6.0 =================================================== 【VB6.0】 '■リストボックスがあり、チェックが入っている場合は、NULL値を渡し、チェックが入っていない場合はチェックボックスのデータ(名称)をパラメータとして渡します。 '■ただし、リスト名の「(空)」にチェックが入っている場合はNULLと空文字(” ”)のデータを抽出しなければなりません!! If objList.Selected(lngListCnt) = True Then If objList.List(lngListCnt) = "(空)" Then '★★★ここが分かりません!!! .Parameters("@Ivch" & strArry(intCnt) & "List" & lngListCnt) = "NULL"←??? Else '■チェックが入っているものは検索対象の為、NULLを渡す .Parameters("@Ivch" & strArry(intCnt) & "List" & lngListCnt) = Null End If Else '■チェックが入っていないものは検索対象外の為、リストボックス内のデータの名称を渡す。 .Parameters("@Ivch" & strArry(intCnt) & "List" & lngListCnt) = objList.List(lngListCnt) End If ========================================= 【SQLServer2000】 CREATE Procedure … ( @IvchList0 VARCHAR(10), @IvchList1 VARCHAR(10), @IvchList2 VARCHAR(10) @Oint件数 INT OUTPUT) AS --■条件に合致する件数を取得し、返します SELECT @Oint件数 = COUNT(*) FROM TB取込 WHERE ((Aテーブル.あ列 <> @IvchList0) OR (@IvchList0 IS NULL)) AND (((Aテーブル.あ列 <> @IvchList1) OR (@IvchList1 IS NULL)) AND (((Aテーブル.あ列 <> @IvchList2) OR (@IvchList2 IS NULL)) ・ ・ ・ 以上です。よろしくお願いします!

  • Javaで機種依存文字を表示できない

    ※以下に記載する【高】は(はしご高)という機種依存文字として記載します。"はしご高"を入力すると、OKWaveで表示しないためです。。 JDBC経由で、PostgreSQLのDBより【高】という機種依存文字を含む文字列を取得しようとしたところ【高】の文字が抜けた状態でしか取得できません。 "高橋" → "橋" として取得してしまう。 ※ Eclipseのデバッグ機能を使用し、DBからデータ値を取得した直後の値を参照しました。 JAVAで機種依存文字【高】を取り扱い、コンソールなどに出力することはできるのでしょうか? Java : JDK1.5.03 PostgreSQL : 8.1.3 : DB文字コード EUC-JP JDBC : postgresql-8.1-408.jdbc3.jar -- 以下プログラム例 Connection con = null; Statement stm = null; ResultSet rs = null; String rtn = ""; try { stm = con.createStatement(); rs = stm.executeQuery(query); rs.next(); rtn = rs.getString(1); ←←←← ここでの変数を確認! System.out.println(rtn); ←←←← ここでの表示を確認! }

    • ベストアンサー
    • Java
  • テキストデータでNULL?

    こんにちは。会社の人がテキストエディタでファイルを開いて、このデータはNULLが入っているからおかしいとかブツブツ言っていました。 データの中身はバイナリデータではなく、固定長、またはCSVファイルのような事を言っていました。 そこで疑問に思ったのですが、固定長、またはCSVでNULLなんてあるんでしょうか?たぶん、空文字列の事をさしてNULLと言っているような気がするのですが、テキストデータにNULLは存在するのでしょうか?

  • javaにてデータ取得

    JAVAカテゴリーで質問しようかこちらにしようか迷ったのですが。。。 あるテーブルを以下の様に内部結合しています。 select * from t_table a, t_table b where a.id=b.id and a.no=0 and b.no=1 この時、t_tableのあるカラムtestcolを取得したいとおもっております。 言語はjavaで、データベースはpostgreSQLです。 rs.getString("testcol"); rsはResultSetオブジェクトです。 これで、データは取得できるのですが、条件のt_tableの別名aのデータ が取得されます。別名bの方を取得したいと思い、単純に rs.getString("b.testcol"); 等としたら、「カラム名がありません」というエラーになりました。 getStringのパラメータとして、カラムインデックス(数値)も 指定できるので、それで行うと取得可能でした。 カラムインデックス指定ですと、プログラムのメンテナンス上支障をきたす ので、なんとか、カラム名の指定で行いたいと思っておりますが、 どうすればいいのでしょうか?

  • JAVAでの、clone() 参照渡し?について

    ArrayListで文字列の配列(String[ ])の配列を作りました。 そして、listにaddするときに *・・・ list.add(item)だと上手くいきません。      繰り返して異なる値のはずなのですが、      例えば、listget(0)[0] , list.get(1)[0] , list.get(2)[0]が全て同じ値になってしまいます。     しかし、     list.add(item.clone())だと上手くいきます、よくわかりませんが参照渡しというのでしょうか? 前者で何故上手くいかないのかがわからないのです。 この二つの違いは何なのでしょうか。 【プログラム】 ArrayList<String[]> list = new ArrayList<String[]>(); String[] item = new String[6]; //このwhileは数回繰り返されますが、下記の値は毎度異なります。 while(rs.next()) { item[0] = rs.getString("Field"); item[1] = rs.getString("Type"); item[2] = rs.getString("Null"); item[3] = rs.getString("Key"); item[4] = rs.getString("Default"); item[5] = rs.getString("Extra"); list.add(item); ・・・・・・・・・・・・・・・・・・・・*       }

    • ベストアンサー
    • Java
  • SQLServer7.0で、SELECT文で列を抽出する ※Nullと0の条件について

    SQLServer7.0で、SELECT文で列を抽出する際なんですが、 列A 列B --------- 1  Null 2  Null 3  1 ↑のテーブルから、列Aの1、2だけを抽出するSELECT文を SELECT * FROM XXX WHERE 列B <> 1 と作成したのですが、うまく動作しません(汗) データが一件も取れないのです。(列B:tinyint型、Null許容) テーブル内のデータをNull→0にして、同SELECT文で抽出すればうまくいったのですが。。 Nullデータを、<>XX という条件で取得することはできないんですかねえ・・・。 それとも、テーブルの設定か、条件の記述方法がまずいんでしょうか。 どなたか、ご存知あればアドバイスをお願いします。

  • NULLが返ってこない…。

    原因がわからないため質問をさせて頂きます。 <%-- JSP <input type="text" name="name"> //名前 String name = request.getParameter("name"); Data data = new Data(); //コンストラクタをnew data.setName(name); --%> <%-- class(Bean) private String n = null; public void setName(String name){ if(name != null){ n = name; }else{ n = null; } public String getName(){ if(name != null){ return name; }else{ return name; } } --%> 値をgetParameter()メソッドで取得をして 値をsetName(name);でセットをしています。 セットした側でもし値があるのであれば その値を変数に格納。 もし値がなければnullを変数に格納しています。 しかし System.out.println(data.getName().equals("");//true System.out.println(data.getName().equals(null);//false; となりnullを返してくれません…。 このコードに何を足したらnullを返してくれるのか わかりません。 わかる方がいらっしゃいましたらよろしくお願い致します。

    • ベストアンサー
    • Java
  • データ数をカウントしたいのですが

    JAVAのJDBCを使いMySqlを操作しデータ数を取得するプログラムです。自分なりに考えたプログラムは Connection con = null; String sql = "select count(*) from テーブル名"; // コネクションを作成する。 con = DriverManager.getConnection(url, user, pass); Statement st = con.createStatement(); // SQLを実行する。 ResultSet rs = st.executeQuery(sql); String count = rs.getString("count(*)"); 実行した結果上手く出来ないのですが、この部分での間違いはありますか?

    • ベストアンサー
    • Java

専門家に質問してみよう