NVL2、NULLIF Top | Knowledge| DB構築| 文字列関数| 日付関数| 集計関数| SQL関数(アルファベット順) SQL(抽出・更新)| SQL*Plus| PL/SQL| Utility| Structure| スキーマ| チューニング| 用語| 参考書
外部結合を使用すると指定した列のデータがテーブルのどちらか一方にしかないレコードも抽出することができます. 外部結合には左外部結合,右外部結合,完全外部結合があります. 左外部結合 左外部結合は結合する列のデータを基準として,左側の表の内容をすべて抽出し,右側の表の内容は左側の表の内容と一致するもののみ抽出する結合です. 左外部結合を使用するにはLEFT OUTERE JOINを使用します. SELECT 列名1, 列名2, ... FROM テーブル名1 LEFT [OUTER] JOIN テーブル名2 ON テーブル名1.列名 = テーブル名2.列名 [WHERE 条件式など] LEFT OUTER JOINで結合するテーブルを指定し,どの列をキーにして結合するかをON句で指定します.なお,OUTERは省略可能です. サンプルに移動 右外部結合 右外部結合は左外部結合の反対です.すなわ
INSTR、INSTRB 関数の内容 文字列 string 中の 検索文字列 substring を検索し、その検索文字列が現れた 文字、または、バイトの位置を示す正数を戻す (1 オリジン) 開始位置 position、検知回数 occurrence のデフォルトはともに 1 開始位置 position にマイナス値を指定すると 文末から文頭 に向けて検索する。マイナスを指定しても戻り値の出現位置は先頭からの正数となる。 INSTR、INSTRB 以外にも各国語キャラクタセットに使用する特定のコードポイント向けの関数がある。 INSTRC : 完全な Unicode 用 INSTR2 : UCS2 用 INSTR4 : UCS4 用 注意点 INSTR、INSTRB の 検索対象文字列の検索開始位置 position は 開始位置を 0 に指定してもエラーにならないが SUBSTR の
OracleではDECODE関数を使って、値を変換する事ができます。使い方はCASE命令と似ています。CASE命令で書き換える事も可能です。 文法: DECODE( x, target, new_value [ , target2, new_value2…..] [ , default] ) xで指定した値を評価し、それがtargetと等しい場合はnew_valueを返す。target2に等しい場合はnew_value2を返す。xの値がどの値とも一致しない場合はdefaultを返す。 使用例:result列が2の場合は’不合格’、1の場合は’合格’を返す。それ以外の場合は’集計中’を返す。 SELECT user, result, DECODE(result, 2, ‘不合格’, 1, ‘合格’, ‘集計中’) FROM tbExamTable; user result DECODE
テーブルの作成 テーブルの最も基本的な作成方法。 create table テーブル名 ( 項目名 データ型 〔default デフォルト値〕〔制約定義〕, 項目名 データ型 〔default デフォルト値〕〔制約定義〕, …, 〔制約定義〕 ) 〔表領域等の定義〕 ; テーブル名や項目名は大文字でも小文字でもいいが、暗黙に大文字に変換される。 ダブルクォーテーションで囲むと変換されない。(select文などで指定する際もダブルクォーテーションで囲む必要が出てくる) default句 データ型の宣言の後に「default デフォルト値」(例:「default 123」「default 'abc'」)を付けることで、その項目のデフォルト値を設定することが出来る。 省略した場合のデフォルト値はNULL。 項目を列挙したinsert文で項目を指定しなかった場合や、insert文やupdate文で
ワイルドカード”%”は、1文字以上の任意の文字列と一致します。 例2) 列「job_name」の先頭に文字列"JOB"が付くレコードを検索する(ワイルドカードに"_"を使用)
全員の name を並び順を気にせずに連結する。 WITHIN GROUP は省略できないので意味のない 「order by null」 を指定してみた。数値を指定してもカラムの第 N 番目でソートというわけでない。 Oracle 11g R2 時点では実行計画に SORT GROUP BY があり、暗黙的に expr 昇順にソートされている。 SQL> select LISTAGG(name) WITHIN GROUP (order by null) concat_name 2 from listagg_sample; CONCAT_NAME -------------------------------------------------- あおきこばやしさとうすずきたかはしやまもと 部門毎に名前をカンマ区切りで連結する。名前の並び順は給料の高い順 SQL> select dep
アイ ラブ SQL (I love SQL) 第233回「高度な副問合わせ ~その7 スカラー副問合わせ その3~」 (2008.12.15) SELECT句でスカラー副問合わせが使えるなんて、ビックリ!な方が多かったと思いますが、実はもっと驚くことに、INSERTのVALUES句でもスカラー副問合わせが使えるんですよ!! えっ?「VALUES句でもじゃなくて、VALUES句のかわりにでしょ?」ですか? はい、誰もが知っているINSERTにおける副問合わせの使用とは、次のような使い方ですよね。 実行例1 いえ、そうでは無くてVALUES句の中の値の代わりにスカラー副問合わせを使用できるんです。 実行例2 値の代わりだからと言って、2列分の値の挿入に2列をSELECTした副問合わせというわけにはいきません。 実行例3 あくまでも、スカラー副問合わせでなければいけません。しかし、
日付のフォーマット使用例 DATE 型のデフォルトの書式は NLS_DATE_FORMAT でフォーマットされる。TIMESTAMP 型は NLS_TIMESTAMP_FORMAT。タイムゾーン付きの場合には NLS_TIMESTAMP_TZ_FORMAT によってフォーマットされる。 TO_CHAR( DATE '2005-06-07', 'RRMMDD') ⇒ '050607' 日付と時刻のフォーマット使用例 TO_CHAR ( TIMESTAMP '2000-01-02 04:05:06', 'YYYY/MM/DD HH24:MI:SS DAY') ⇒ 2000/01/02 04:05:06 日曜日 日付に関する豆知識 曜日を求める TO_CHAR 関数で曜日を取得することも可能(和名、または、英名) 曜日を取得するには 書式指定に 'DAY' を指定する。 日本の曜日はすべて同じ長
7 トランザクションの定義および制御 この章では、トランザクション処理の実行方法について説明します。Oracleデータへの変更を確定するかまたは取り消すかの制御方法など、データベースの一貫性を保護する基本的な方法を学習します。内容は次のとおりです。 基本用語 トランザクションによるデータベースの保護 トランザクションの開始および終了方法 FOR句の使用方法 ROLLBACK文の使用方法 SAVEPOINT文の使用方法 RELEASEオプションの使用方法 SET TRANSACTION文の使用方法 デフォルト・ロックのオーバーライド 複数のコミットにわたるフェッチ 分散トランザクションの処理 ガイドライン 基本用語 トランザクションの本題に入る前に、この項で定義されている用語を理解する必要があります。 Oracleが管理するジョブまたはタスクは、セッションと呼ばれます。アプリケーション・プロ
SUBSTR、SUBSTRB 関数の内容 SUBSTR は取り出す文字列をキャラクタ単位、 SUBSTRB はバイト単位で部分文字列の取り出しを行なう。 文字列 string の 開始位置 position から legnth 文字、または、バイト分 の部分文字列 (SUBSTRING) を戻す。 開始位置 position は 1 オリジンで始まるが 0 でも有効で 1 を指定したことになる。また、開始位置 position にマイナス値を指定すると文末から position 逆行した位置から文字列を取り出す。 文字列長 length を省略すると文字の最後までが対象となり、0 以下の数値も指定できるが結果は常に NULL を戻す。 BASIC にあるような左から length 文字 (left) 、右から length 文字 (right) のような個別の関数は用意されていない。 SU
この比較は RTRIM('abc') 比較条件 RTRIM('abc______') のようにも見えるが実際は反対?でちょっと違う。 名前の通りスペースを PADDING した(満たした※) 後に比較する。短い方の文字列が長い方の文字列と同じ長さになるまでスペースが充填される。TRIM より PADDING をエミュレーションする方がメモリ使用量が少なくて速いのかも。 つまり「空白埋め」とは TRIM (FM 書式修飾子の FILL) ではなく PADDING であるということ。 vLength := GREATEST(length('abc'), length('abc______')); RPAD('abc', vLength ) 比較条件 RPAD('abc______', vLength) というイメージ 参考: RTRIM 関数、RPAD 関数、NLS_COMP 初期化パラメータ
SQL で文字列を扱う場合は、シングルクォーテーション ( ‘ ) で囲む必要がありますが、シングルクォーテーション自体を文字として扱いたい場合には ( ” ) とシングルクォーテーションを2つ連続で記述しなければいけません。また、Oracle 10g から代替引用符 q 演算子を使用することでも同等のことができるようになりました。ここではこれらのサンプル SQL を掲載しています。 シングルクォーテーションなしの文字列 select 'I am boy' as result from dual result --------------- I am boy シングルクォーテーションありの文字列でエラーとなる記述 ORA-ERROR が発生します。ORA-01756:引用符付き文字列が正しく終了していません select 'I'm boy' as result from dual ORA-
引用符 単一引用符(シングルクォート)と二重引用符(ダブルクォート) 多くの開発言語では単一引用符(') と二重引用符(") は以下の例のように相互に置き換え可能である。 vData = "文字列" vData = '文字列' しかし Oracle において二重引用符(") は リテラル をクォートするための文字ではなく、引用識別子をあらわす引用符である。 以下の代入文はエラーとなる。 vData := "無効な識別子となる文字列"; vData := ""; ORA-01741: 長さゼロの識別子は無効です。になるのが望ましいと思うが再帰SQLエラーになる。 関連事項 ⇒ リテラル内での単一引用符の表現方法:代替引用符 引用識別子と非引用識別子 二重引用符(") は引用識別子をあらわすために使用する。 通常の利用では、ほとんどが二重引用符(") でクォートされない(囲まれていない)非引用
Oracle Database Express Edition 11g Release 2のダウンロード Oracle Express Edition 11g Release2のダウンロードページを開きます。 ※ダウンロードにはOracleへのユーザー登録(無償)が必要です。 ダウンロードページの"Accept License Agreement"をクリックします。 "Oracle Database Express Edition 11g Release 2 for Windows x32"をクリックします。 ダウンロードが開始されるので、ダウンロードが終了するまで待ちます。 ダウンロードされた"OracleXE112_Win32.zip"をダブルクリックして解凍します。 解凍されたフォルダ"DISK1"を開き、"setup.exe"をダブルクリックします。 Oracle Database
Oracleの確認環境が欲しかったのでインストールした。 今回はダウンロードまで。 はじめに 目的 無償版のExpress Editionでは無い理由 Oracle18c XEでは制限が緩和されました OracleDBを無償で使うための条件 OracleEEを選択した理由 12cを選択した理由 Databaseのダウンロード Clientのダウンロード 次回は はじめに 自宅でOracleの動作が確認できないと不便に感じたので色々調べてみた。 インストールまで入れるとちょっと長いので、今回はダウンロードまでの流れをメモ。 ちなみにサーバー機にDatabase、クライアント機にClientを入れようと思う。 目的 Oracle Database Enterprrise Edition(以後EE) 12cをダウンロードする。 無償版のExpress Editionでは無い理由 Oracleには
米Oracleは2月29日、JavaScriptツールキット「Oracle JET(JavaScript Extension Toolkit) 2.0.0」をオープンソースで公開した。クライアントサイドアプリケーション開発に向けたもので、さまざまなオープンソースのライブラリなどを容易に組み合わせて利用できるという。 Oracle JET(JavaScript Extension Toolkit)は、JavaScript、CSS3、HTML5をベースとしたモジュラー式のオープンソースツールキット。jQUeryやKnockout、requireJSといったオープンソースのコンポーネントを活用して実装されているという。豊富なUIコンポーネントや強力なルーティングシステム、賢いリソース管理ツール、アクセシビリティや多言語対応、SPA(Single Page Application)ベースのテンプレ
OracleのSQLで集計を行いたいのですがエラーになりました。どこが悪いのか教えてください。 以下のSQLを実行すると、ORA-00979: GROUP BYの式ではありません。のエラーなりました。 どこが間違っているのか教えてください。 SELECT "FDF開発費用振分マスタ".年月, "FDF開発費用振分マスタ".工番, "FDG仕掛品勘定データ".部門工番, "FDG仕掛品勘定データ".事業部コード, SUM("FDG仕掛品勘定データ".金額), "FDG仕掛品勘定データ".処理年月 FROM "FDF開発費用振分マスタ", "FDG仕掛品勘定データ" WHERE "FDF開発費用振分マスタ".工番 = "FDG仕掛品勘定データ".部門工番 AND "FDF開発費用振分マスタ".原価内直課区分 ='1' AND "FDF開発費用振分マスタ".年月 ='201205' group
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く