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

失礼します。
PL/SQLについて、初歩的な質問をさせてください。

DBに以下のような文字列が入っていて、
それを抽出し変数にセットするとします。
A'1234567'→変数aにセット
B'  12A345B'→変数bにセット

質問1
Aの文字列を取得した際、'123-4567'のように
間にハイフンを付けて変数aにセットする場合
どのようなPL/SQLの記述になりますか?

質問2
Bの文字列を取得した際、'12345'のように
左側の空欄と数字以外の文字を取り、
なおかつ数字を半角にして変数bにセットする場合
どのようなPL/SQLの記述になりますか?

お手数お掛けしますが
ご回答宜しくお願いします。

A 回答 (2件)

おはようございます。


1.は既に解決済みかもしれませんが。

1.
a := SUBSTR(A,1,3) || '-' || SUBSTR(A,4,4);
※3文字と4文字に区切る場合

2.
左側の空欄を取るのであれば、関数がありますので、以下で可能です。
b := LTRIM(B);
が、
・数字以外の文字を取る
・半角にする
関数はないと思いますので、何かしらのロジックを考える必要があるのではないでしょうか。
例えばですが、
REPLACE('A','')
と、'A'をNULLに置換することができると思いますが、それを、考えられる文字列全てに対して行います。
そのロジックを、関数にしてしまうことも手だと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
2につきましては関数を作って対応する方向にしようと思います。

お礼日時:2010/01/15 23:14

質問2:


無理やり感が漂っていますが、こんな感じでできました。

select LTRIM(TRANSLATE('  12A345B','1234567890 '||TRANSLATE('  12A345B','12345678901234567890',' '),'1234567890 '),' ') AS KEKKA from dual

--------結果--------
KEKKA
12345


正規表現(REGEXP_SUBSTR)等を使った綺麗な回答が
他にあると思うのでそれまでのつなぎにどうぞ。
    • good
    • 0
この回答へのお礼

回答、ありがとうございました!
参考にさせてもらいます^^

お礼日時:2010/01/15 23:15

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

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