電子書籍の厳選無料作品が豊富!

ORACLE更新する際のSQLで困ってますので、SQLを教えてください。
TABLE1の中に項目MEMO(15桁)が存在します。
このMEMOに入っているデータは以下のとおりです。

MEMO
090-XXXX-XXX1
090-XXXX-XXX2
090-XXXX-XXX3
A
B
C
090-XXXX-XXX4
090-XXXX-XXX5
090-XXXX-XXX6

このデータの中で、上3行のデータ(090-XXXX-XXX1~090-XXXX-XXX3)のデータを
下3行のデータ( 090-XXXX-XXX4~ 090-XXXX-XXX6)のように
1桁目をスペースする形で統一したいと思います。

更新後のデータは以下のとおりです。

MEMO
090-XXXX-XXX1
090-XXXX-XXX2
090-XXXX-XXX3
A
B
C
090-XXXX-XXX4
090-XXXX-XXX5
090-XXXX-XXX6

このような場合のSQL作成方法はどのようにしたらいいのでしょうか?

WHERE文については、
WHERE SUBSTR(MEMO,1,1) <> 'A' AND SUBSTR(MEMO,1,1) <> 'B' AND
SUBSTR(MEMO,1,1) <> 'C' AND SUBSTR(MEMO,1,1) <> ' '
これでいいのかなと思うのですが、
作成方法について教えて頂きたく思います。

よろしくお願いします。

A 回答 (2件)

>こちらでは万一変更前MEMOに15桁フルで使用されている場合は


とありますが、CHAR(15)と定義しているのであれば全データが15桁まで半角スペースで埋められますよね。
http://download.oracle.com/docs/cd/E16338_01/ser …
ですので、
>090-XXXX-XXX1
>090-XXXX-XXX2
>090-XXXX-XXX3
>A
>B
>C
>' 090-XXXX-XXX4'
>' 090-XXXX-XXX5'
>' 090-XXXX-XXX6'
このようなデータはあり得ないわけです。実際には
'090-XXXX-XXX1__'
'090-XXXX-XXX2__'
'090-XXXX-XXX3__'
'A______________'
'B______________'
'C______________ '
'_090-XXXX-XXX4_'
'_090-XXXX-XXX5_'
'_090-XXXX-XXX6_'
というデータになっているはずです。(アンダースコアは半角スペース)

上記を踏まえて、更新後にどのようなデータになっていたらいいか提示していただけますか?
    • good
    • 0

半角スペースが消えてしまっているのでデータが分かりづらいのですが、


update TABLE1
set MEMO = ' ' || MEMO
where 記載の条件;

で先頭に半角スペースを追加することができると思います。
    • good
    • 0
この回答へのお礼

早速教えて頂き、ありがとうございます。
スペース消えてたので、スペース対象分のみ前後に''でくくった形で再度記載しておきます。
(実際は''はありませんので、関係ありません。前スペースが消えてしまうので、
表示するための対処です。)

更新前のデータは以下のとおりです。

MEMO
090-XXXX-XXX1
090-XXXX-XXX2
090-XXXX-XXX3
A
B
C
' 090-XXXX-XXX4'
' 090-XXXX-XXX5'
' 090-XXXX-XXX6'


更新後のデータは以下のとおりです。

MEMO
' 090-XXXX-XXX1'
' 090-XXXX-XXX2'
' 090-XXXX-XXX3'
A
B
C
' 090-XXXX-XXX4'
' 090-XXXX-XXX5'
' 090-XXXX-XXX6'

それで、先ほど教えて頂いたUPDATE文、
update TABLE1 set MEMO = ' ' || MEMO where 記載の条件;
ですが、
こちらでは万一変更前MEMOに15桁フルで使用されている場合は、
変更後MEMOは空白1桁+変更前MEMOの14桁までを編集した形で
最後の15桁目は削られてもよいと考えています。

現状ORACLEの設定ではMEMO CHAR(15)と指定していますが、
教えて頂いたSQLを実行してもエラー等は発生しないでしょうか?

一応、心配になったので再度質問させて頂きました。
お手数ですが、教えて頂ければ嬉しいです。
よろしくお願いします。

お礼日時:2011/10/18 17:44

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

関連するカテゴリからQ&Aを探す