Home実験室 − No.0027


        No.0027(SQL)
        SQL*PLUS標準出力に文字列を表示

■環境
  □OS: Windows XP Professional SP3
  □Oracle: Oracle Database 11g R2 (Standard)
  □OSログインユーザ: ORA_DBAグループ
  □Oracleユーザ: dicdic(実験用ユーザー) → 実験環境構築スクリプト

■実験
  0. 実験ユーザー「dicdic」でコネクトする。

SQL> conn dicdic/Oracle11g 接続されました。 SQL>



  1. Dual表を使えば、いきなり好きな文字列を表示できちゃう。
     Dual表って何だ? まるで四次元ポケットみたいだな。ヘッダの見栄がよろしくない。

SQL> SELECT 'dicdicのホームページ' FROM DUAL; 'DICDICのホームペー -------------------- dicdicのホームページ SQL>



  2. ヘッダ(列見出し)の定義の仕方は一般のSelectとおんなじ。

SQL> SELECT 'dicdicのホームページ' へっだー FROM DUAL; へっだー -------------------- dicdicのホームページ SQL>



  3. シングルコーテーションでくくるのをやめるとエラーになる。
     シングルコーテーションで括るとデータベースで扱うデータとして認識され、
     ダブルコーテーションで括ると静的な文字列として認識され、
     括らないと列名やテーブル名として認識されるのだ(たぶん)。

SQL> SELECT dicdicのホームページ へっだー FROM DUAL; SELECT dicdicのホームページ へっだー FROM DUAL * 行1でエラーが発生しました。: ORA-00904: "DICDICのホームページ": 無効な識別子です。 SQL>



  4. シングルコーテーションとダブルコーテーションの使い分け方が分かってきた?

SQL> SELECT 'dicdicのホームページ' "へっだー" FROM DUAL; へっだー -------------------- dicdicのホームページ SQL>



  5. うーん...文字列中にダマでシングルコーテーション(あぽすとろふぃ)を入れると
     エラーになっちゃうな。デリミタとして認識されちゃうからだ。

SQL> SELECT 'dicdic'sホームページ' "へっだー" FROM DUAL; ERROR: ORA-01756: 引用符付き文字列が正しく終了していません SQL>



  6. 文字列中にダマでシングルコーテーション(あぽすとろふぃ)を表示させるには、      連続して入力すればよいのだ。でもちょっと見辛い。

SQL> SELECT 'dicdic''sホームページ' "へっだー" FROM DUAL; へっだー -------------------- dicdic'sホームページ SQL>



  7. 見づらいと思ったら、「q'[なんとか]'」というふうに、表示したい文字列を括るやり方がある。

SQL> SELECT q'[dicdic''sホームページ]' "へっだー" FROM DUAL; へっだー --------------------- dicdic''sホームページ SQL>



  8. これならシングルコーテーション(あぽすと...)をひとつにしても大丈夫

SQL> SELECT q'[dicdic'sホームページ]' "へっだー" FROM DUAL; へっだー -------------------- dicdic'sホームページ SQL>



  9. そういえば、Dual表を使ったものに、こんなふうな計算とかもあったよね。

SQL> SELECT 100/NULL "100をNULLで割った結果" FROM DUAL; 100をNULLで割った結果 --------------------- SQL>



  10. 列名にはこの文字列表示方法は使えないのか....。べつにいいけど。

SQL> SELECT 100/NULL q'[100をNULLで割った結果]' FROM DUAL; SELECT 100/NULL q'[100をNULLで割った結果]' FROM DUAL * 行1でエラーが発生しました。: ORA-00923: FROMキーワードが指定の位置にありません。 SQL>



  11. 以前やった、Select結果を文章にするってやつで、こんなやり方もできるってことだね。
     でもなんかちょっと、うるさい感じ。

SQL> SELECT 氏名||q'[ の学生番号は ]'||q'[学生番号]'||q'[ です。]' うるさい連結 FROM TT01_学生 Where rownum < 10; うるさい連結 --------------------------------------------------------------------- 窪田 信玄 の学生番号は 学生番号 です。 須藤 貞次 の学生番号は 学生番号 です。 黒田 比呂美 の学生番号は 学生番号 です。 望月 淳三 の学生番号は 学生番号 です。 岩田 昌信 の学生番号は 学生番号 です。 菅沼 和奏 の学生番号は 学生番号 です。 岩谷 彦太郎 の学生番号は 学生番号 です。 島津 昌孝 の学生番号は 学生番号 です。 下川 里沙 の学生番号は 学生番号 です。 9行が選択されました。 SQL>



  12. この場合は、やっぱりこっちでしょう。

SQL> SELECT 氏名||' の学生番号は '||学生番号||' です。' FROM TT01_学生 Where rownum < 10; 氏名||'の学生番号は'||学生番号||'です。' ---------------------------------------------------------------------- 窪田 信玄 の学生番号は 2007B0114 です。 須藤 貞次 の学生番号は 2007B0132 です。 黒田 比呂美 の学生番号は 2007B0156 です。 望月 淳三 の学生番号は 2007B0169 です。 岩田 昌信 の学生番号は 2007B0179 です。 菅沼 和奏 の学生番号は 2007B0188 です。 岩谷 彦太郎 の学生番号は 2007B0190 です。 島津 昌孝 の学生番号は 2007B0193 です。 下川 里沙 の学生番号は 2007B0195 です。 9行が選択されました。 SQL>



    【PR】    Oracle実験室監修  『Oracleアーキテクチャ鳥瞰図』 PDF  (Oracleのアーキテクチャを一目で俯瞰できるイラスト)  


Home実験室 − No.0027

© 2011-2011   Amateur Laboratory of ORACLE
inserted by FC2 system