プロが教えるわが家の防犯対策術!

下記表があり、列0のデータを条件に,
列1,列2,列3の値を更新する方法を教えてください

表 :t_test
列0:管理No
t_test_no VARCHAR2(7) NOT NULL PRIMARY KEY
列1:値(文字)
t_test_data VARCHAR2(20)
列2:値(数値)
t_test_suu NUMBER(3,2)
列3:値(数値)
t_test_jousuu NUMBER(1,0)

データ例
列0, 列1, 列2, 列3
A000001, abc, 1.2, 0
A000002, Null, Null, Null
A000003, a1b2c3, 1.23, 2
A000004, opqrstuv, 0.2, 4
A000005, あいう, 0, 1

列0 条件のデータは必ず既存するものとする
つまり、更新(update)処理

A 回答 (4件)

Nullの更新については下記のお話の通りだと私も思います。


長さ0の文字列('')とNullの等価性については、Oracleのバージョン、IS NULL関数の動き、条件設定時、マニュアルの表記など
いまいち同期が取れていず、ややこしい問題です。

やっぱり、私個人の感覚ですが、長さ0の文字列≒Nullと認識して
更新時は''ではなく、一括でNullを使用した方が固いと思います。

あと、これも良く解らなかったのですが
Excelのデータを一括してOracle側に更新したいと言う事でしょうか?

でしたら、Excel側に格納されているデータにもよるのですが、
少し工夫して、NVL関数やDECODE関数、LENGTH、TRIM系を駆使する必要があるかもしれません。

あ、ご存知かもしれませんが、DECODE関数はレスポンスが悪化します。
万を超える件数をUPDATEする時はご注意下さい。苦情がきます。笑。
    • good
    • 0
この回答へのお礼

ありがとうございました
うまく出来ました

お礼日時:2005/11/08 08:48

>数値型列のnull、文字型列のnullのupdate方法


>を教えてください。

列の型が数値、文字に関係なく、nullで更新できる
はずです。これはSQLの標準仕様です。

update t_test
set t_test_data = Null,
t_test_suu = Null,
t_test_jousuu = Null
where t_test_no = 条件
    • good
    • 0
この回答へのお礼

ありがとうございました
うまく出来ました

お礼日時:2005/11/08 08:47

>列0を条件に、


> 数値型列のnull、文字型列のnullのupdate方法
>を教えてください。

where t_test_suu is null or t_test_jousuu is null

で、数値列2列のいずれかが、nullであるデータを対象とします。

>理由といたしまして、多数のデータをexcelに存在しており、・・・

このくだりは、オラクルにどう関わるのか?判らないので、理解不能です。(^^;
    • good
    • 0
この回答へのお礼

ありがとうございました
うまく出来ました

お礼日時:2005/11/08 08:47

update t_test set


t_test_data = なにか,
t_test_suu = なにか,
t_test_jousuu = なにか
where
t_test_no = 条件

ですが、これだとただのupdate文ですから、初歩中の初歩ですよね。
お聞きになっている意味が違いますか?
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます
列0を条件に、
 数値型列のnull、文字型列のnullのupdate方法
を教えてください。
下記でしょうか??

update t_test set
t_test_data = '',
t_test_suu = Null,
t_test_jousuu = Null
where
t_test_no = 条件

理由といたしまして、多数のデータをexcelに存在
しており、それを一括で更新したいと考えています

お礼日時:2005/11/05 13:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!