- - PR -
スペースのみのデータの取得
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-10-24 14:53
Oracle9iを使っています。
説明しにくいのですが、例えば以下のようなA表があるとします。 No data --------- 1 aaaa 2 □□□ 3 □△□ 4 aa△bb 5 cc□bb 6 .... --------- ※□は全角スペース、△は半角スペース ※data列はvarchar2で長さは決まっていないものとします。 (どんな長さでも対応できるようにするため。) この時に、2,3のみを取得したいのですが、どのようなSQLを書けばよいでしょうか。 select No from A where lengthb(data) > 0 and trim(data) is null としてみましたが、dataが半角スペースのみで構成されている場合は、trim(data)はnullになってくれるのですが、全角スペースをtrimしても全角スペースのままなのでうまくいきません。 宜しくお願い致します。 |
|
投稿日時: 2007-10-24 14:58
> 全角スペースをtrimしても全角スペースのままなのでうまくいきません。
全角スペースを半角スペースに変換してからtrimすれば良いのでは? |
|
投稿日時: 2007-10-24 15:03
select No from A where data like '□%' or data like '%□'
とか? |
|
投稿日時: 2007-10-24 15:08
こあらさんtkrnさん返答ありがとうございます。
>全角スペースを半角スペースに ですが、早速試してみました。 select lower('□') from dual とすると、悲しいことに全角スペースが返ってきてしまうようです。 tkrnさんに教示頂いた例ですが、 これですと、'□aa'や'bb□'も取ってきてしまいます。 スペースのみで構成されたデータを取得したいです。 |
|
投稿日時: 2007-10-24 15:10
前後全角スペースのものを取りたいのではなく、
半角全角関係なく未入力のものを取得したいんですね。 ならこあらさんの言われている通りです。 先ほどのは無視してください。 |
|
投稿日時: 2007-10-24 15:12
なぜにlower?
replaceとかto_single_byteとかに行き当たりません? |
|
投稿日時: 2007-10-24 15:14
使う関数が間違えていました。
TO_SINGLE_BYTEですね。 select TO_SINGLE_BYTE('□') from dual で半角スペースが取れました。 どうもありがとうございました。 |
1