Need to convert...
今日はOracle Technology Network(OTN)のDiscussion ForumsよりSQLに関する投稿をご紹介します。 今回は少し趣向を変えて投稿された質問から解決する ためのSQLをみなさんで考えていただければと思います。 投稿者は当初投稿していた質問と状況が変わったことを 追加で投稿しています。 ※OTNは無償のユーザ登録を行うことで参照可能です。 ■ OTNトップページ http://www.oracle.com/technology/index.html ■ 引用ページ http://forums.oracle.com/forums/thread.jspa?threadID=400352&tstart=90 _________________________  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 記事本文 _________________________  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ◆ Need to convert part of a string from lowercase to uppercase Hello there, The facts are changed. Everything what's next after AAA_ must be in uppercase, except the extension .pdf: 100000_AAA_20060630_en.pdf => 100000_AAA_20060630_EN.pdf or abc_100000_AAA_20060630_en.pdf => abc_100000_AAA_20060630_EN.pdf In my update clause I have to search for string "AAA_". From this point I have to transform the lowercase into uppercase, except the extension. How can I accomplish this? Regards, Ronny. ■ OTNトップページ http://www.oracle.com/technology/index.html ■ 引用ページ http://forums.oracle.com/forums/thread.jspa?threadID=400352&tstart=90 _________________________  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 英語の語順に近い解釈 _________________________  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ◆ Need to convert 変換が必要です。 part of a string 文字列の一部 from lowercase to uppercase 小文字から大文字へ Hello there, こんにちは The facts are changed. 状況が変わりました。 Everything what's next 全ては以下です。 after AAA_ must be in uppercase, "AAA_"以降の文字は大文字で except the extension .pdf: 拡張子".pdf"を除き。 100000_AAA_20060630_en.pdf => 100000_AAA_20060630_EN.pdf or abc_100000_AAA_20060630_en.pdf => abc_100000_AAA_20060630_EN.pdf In my update clause 変更点は I have to search for string "AAA_". "AAA_"という文字列を探さなければならないこと From this point その位置から I have to transform 変換しなければなりません。 the lowercase into uppercase, 小文字を大文字に except the extension. 拡張子を除いて How can I accomplish this? どうしたら達成できますか? ■ OTNトップページ http://www.oracle.com/technology/index.html ■ 引用ページ http://forums.oracle.com/forums/thread.jspa?threadID=400352&tstart=90 _________________________  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 解釈のポイント _________________________  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ◆ Need to convert part of a string from lowercase to uppercase (※)convert = 変換 lowercase = 小文字(abcd...) uppercase = 大文字(ABCD...) The facts are changed. 条件が変わりました。 Everything what's next 全ては以下です。 after AAA_ must be in uppercase, "AAA_"以降の文字は大文字で except the extension .pdf: (※)extension = 拡張子 In my update clause (※)clause = いくつかの単語のあつまり、節 I have to transform (※)transform = convertの言い換え How can I accomplish this? (※)accomplish = 達成する ■ OTNトップページ http://www.oracle.com/technology/index.html ■ 引用ページ http://forums.oracle.com/forums/thread.jspa?threadID=400352&tstart=90 _________________________  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 解説 _________________________  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 当初は拡張子pdfを除いて、全て大文字に変換したいという ことだったのですが、それなりに回答が入った後で 条件が変わったので少し混乱していますね。 最終的な回答としてはinstr関数を使用して、 AAA_の位置を探し、それ以降を一度全て大文字に変換した 後、replace関数でPDFをpdfに変換するという対応に なったようです。最終的にどんなSQLになったかは 投稿されていませんが、だいたい以下のような 感じではないでしょうか。 create table test1 (col1 varchar(30)); insert into test1 values ('abc_100000_AAA_20060630_en.pdf'); insert into test1 values ('100000_AAA_20060630_en.pdf'); select * from test1; update test1 set col1=substr(col1,1,instr(col1,'AAA_')-1) ||replace(upper(substr(col1,instr(col1,'AAA_'))),'PDF','pdf'); select * from test1; ■ OTNトップページ http://www.oracle.com/technology/index.html ■ 引用ページ http://forums.oracle.com/forums/thread.jspa?threadID=400352&tstart=90 _________________________  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ アンケート(第2回) _________________________  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 今後の記事の方向性をより読者に合ったものにしていきたいので、 もしよろしければ以下のアンケートにお答えいただけると うれしいです。(リンクをクリックするだけでOKです!) ☆どの記事が良かったですか。 ◆#001 Project Rockdown ┗ http://clickenquete.com/a/a.php?M0002066Q0015626A194a6 ◆#002 Virtual Index ┗ http://clickenquete.com/a/a.php?M0002066Q0015626A2819c ◆#003 Insert to Alert File ┗ http://clickenquete.com/a/a.php?M0002066Q0015626A3724c ◆#004 Tom's Blog ┗ http://clickenquete.com/a/a.php?M0002066Q0015626A4b930 ◆#005 Build Your RAC 10g ┗ http://clickenquete.com/a/a.php?M0002066Q0015626A59aaa ◆#006 Convert string ┗ http://clickenquete.com/a/a.php?M0002066Q0015626A6c16e ◆他のネタ希望(できればコメントにいれてね) ┗ http://clickenquete.com/a/a.php?M0002066Q0015626A75883 ○結果を見る ┗ http://clickenquete.com/a/r.php?Q0015626Caf95 ○コメントボード ┗ http://clickenquete.com/a/cb.php?Q0015626P00C7fe0 締切:2006年07月19日18時00分 協力:クリックアンケート http://clickenquete.com/ 第1回アンケートも7/15までは受け付けています。(^-^) ☆あなたのOracleに対する役割はなんですか? ◆DBA ┗ http://clickenquete.com/a/a.php?M0002066Q0015550A1bd5f ◆コンサルタント ┗ http://clickenquete.com/a/a.php?M0002066Q0015550A28a54 ◆アプリケーション開発者 ┗ http://clickenquete.com/a/a.php?M0002066Q0015550A36a3b ◆インフラ構築担当 ┗ http://clickenquete.com/a/a.php?M0002066Q0015550A429ce ◆学習中 ┗ http://clickenquete.com/a/a.php?M0002066Q0015550A577bb ◆Oracleとは無関係 ┗ http://clickenquete.com/a/a.php?M0002066Q0015550A63058 ◆その他 ┗ http://clickenquete.com/a/a.php?M0002066Q0015550A7e1d9 ○結果を見る ┗ http://clickenquete.com/a/r.php?Q0015550Cf507 ○コメントボード ┗ http://clickenquete.com/a/cb.php?Q0015550P00Ce940 締切:2006年07月15日18時00分 協力:クリックアンケート http://clickenquete.com/ _________________________  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 編集後記 _________________________  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 今号からご購読いただいた皆様はじめまして。 本日も最後まで読んでいただきありがとうございます。 Forum形式はいかがでしたでしょうか。 このフォーラムはスレッドが登録される度にメール で通知してもらえることもできるのですが、 正直言って仕事にならなくなります。極端な話 秒単位でメールがやってきます。(^-^; 裏を返せば、もし質問を投稿してもものすごい 勢いで回答してもらえるということです。 多少の文面は気にせず思い切って投稿してみるのも いいと思います。 それではまた。 ___________________________________  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ おわりに ___________________________________  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 記述誤りなどのご指摘、 記事に関する疑問点・質問・感想・ご意見・ご感想など yakusa_oracle@yahoo.co.jpまでお願い致します。 簡単な自己紹介はこちら http://pr2.cgiboy.com/S/3191274 バックナンバー兼ブログはこちら http://imoment.web.fc2.com/ 登録・解除はこちらから http://www.mag2.com/m/0000200441.htm