タグ

SQLとOracleに関するstarneon3517のブックマーク (3)

  • SQL*Plusから、CSVでSPOOLする - あのときのログ

    Oracleを使っていると必ず話題になるこのネタ。 自分も業務でそんなスクリプト一杯作った気がするが、 先日、oracleがあんまり得意でない後輩に尋ねられて・・・あれ? パッと書けなくなってた(汗) 簡単なサンプルを提示しようと思い、昔の記憶を呼び起こしながら、 リファレンスとGoogle先生でシステム変数の設定を補足してカリカリと書いてみた。 【テーブル】 create table TBL1 ( col1 number(4), col1 varchar2(10), col3 date ) 【データ】※各値にはスペースは含まれていない col1  col2  col3 1   AAA  2011-04-22 2   BBB  2010-03-31 3   CCC  2012-01-01 【CSV出力】 set head off -- ヘッダを出力しない set trimspool on

    SQL*Plusから、CSVでSPOOLする - あのときのログ
  • Oracle では文字長 0 の文字型カラム値は勝手に NULL になってしまう!? : i am BEST

    2013年05月09日05:48 カテゴリSQLデータベース Oracle では文字長 0 の文字型カラム値は勝手に NULL になってしまう!? 前回、前々回と SQL での null に関わるちょっと直感的にはわかりにくい挙動についてお話をしてきました。 前々回は、比較対象のカラムが双方 null だったとしても = にはならない、ということと、とは言っても null 同士の比較を true にしたい場合は IS NOT DISTINCT FROM という述語が使えるよというお話をしました。 前回は、null であるカラムを連結すると結果は null になってしまうという事象を紹介しました。 連結するカラムの中に null が入っていると全部が null になってしまうのは SQL そのものの仕様で仕方がないのですが、null があった場合にはブランクや長さ0 の文字、数字の 0 など

    Oracle では文字長 0 の文字型カラム値は勝手に NULL になってしまう!? : i am BEST
  • Nullと空文字の扱いにハマった(Oracle vs SQL Server)

    このテーブルに対して、OracleSQL Serverが操作しようとすると以下のようになる。 Oracle の場合 SELECT * FROM DENPYO WHERE 担当者 IS NULL --> 伝票No 「D003」、「D004」 が取得できる SELECT * FROM DENPYO WHERE TRIM(担当者) IS NULL --> 伝票No 「D002」、「D003」、「D004」 が取得できる ひとつ目のSQLは、[担当者]が空文字("")の「D0003」とNullの「D0004」のレコードが取得できる。 ふたつ目のTRIMをしたSQLでは、「D0002」の[担当者]が空文字("")とみなされるため、「D0002」、「D0003」、「D0004」が取得できる。 SQL Server の場合 SELECT * FROM DENPYO WHERE 担当者 IS NULL

    Nullと空文字の扱いにハマった(Oracle vs SQL Server)
    starneon3517
    starneon3517 2017/02/07
    NULLと空文字を区別しないなんて…。
  • 1