|
■No21463 (たく さん) に返信 > 質問がありますので、どうかよろしくお願いします。 > > 現象ですが、NVL関数を使用してDBにあるNullの値を半角スペースに置き換えているのですが > なぜかNullになってしまっています。環境はVB.NET2005 + Oracle10gです。 > > 作業方法ですが、 > 1.新しい項目の追加からデータセットを選択。 > 2.データ接続。目的のテーブルを登録。 > 3.以下のようなコードを作成し、データを取得しています。 > 接続部分は省略しています。 > ----------------------------------------------------------------------------------- > Imports System.Data.OracleClient > > Dim conn As OracleConnection > Dim cmd As OracleCommand > Dim adapter As OracleDataAdapter > Dim dataTable As DataSet1.テーブルDataTable > > conn = オラクルコネクション > cmd = conn.CreateCommand() > cmd.CommandText = " SELECT ID, NVL(NAME, ' ') FROM テーブル WHERE ID = :ID" > cmd.Parameters.AddWithValue(":ID", "1") > adapter = New OracleDataAdapter(cmd) > dataTable = New DataSet1.テーブルDataTable > adapter.Fill(dataTable) > ---------------------------------------------------------------------------------- > > ここで、列:NAMEが半角スペースになりません。 > SQL*PLUSなどでは半角スペースが取得できていますが、この方法では値がNULLになってしまいます。 > DBの値がNULLだと、この方法では必ずNULLになってしまうのでしょうか? > NULLの場合、Is列名Nullのプロパティで判断は出来ますが、これしか方法は無いのでしょうか?
NVL後の列名に別名が必要なのでは? cmd.CommandText = " SELECT ID, NVL(NAME, ' ') NAME FROM テーブル WHERE ID = :ID" ではどうでしょうか?
|