からくりブログ

株式会社からくり社員のブログです

Oracle 空白埋めレコードを探せ

タイトルが大げさに書きましたが、大した事じゃないです。
ただ迷走したので、備忘録を残しておきます。

一度は見たことがあるかもしれない下記表をご覧下さい。

No Column1
1 ” “
2 “”
3 Null

1. 空白あり, 2. 空欄, 3. Null
Oracle (というか Column1 の型が VARCHAR2 である時(予防線))では、
sqlplus でSELECTすると、


SELECT * FROM Table1

No Column1
—————-
1
2
3
※手抜きではない。

こういう風に見える(表示される)。
見た目は一緒だが、他の有名ページにもあるように
No.1 と 2 or 3 は明確に扱いが違う。

本題は, No.1 の空白だけのデータがあるレコードだけを抽出したい。

ただ、できたSELECT文を見ると、そう難しいこと・・・
いえ、非常に簡単である。

SELECT * FROM Table1
WHERE TRIM(Column1) IS NULL
AND LENGTH(Column1) > 0


空白を取り除いた文字が NULL である かつ、
取り除く前の文字列が 0 でない場合が
No.1 だけを取得する条件である。
(その発想に至るまでの過程は、置いといて。やめて、聞かないで。)

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>