2011-10-18 11 views
0

内の文を複数のケースを持つことができます使用方法は次のとおりですは、私たちは、私たちは、その後、複数のケースを使用することができる場合、私はちょうどことを確認したかったケースの中にケースを必要と何かをしようとしています?私は、SQLのTeradata に私がしようとしているコードを、これを実行しているSQL

AND(
    case when CHARACTER_LENGTH(drug.n)=0 then 0 

    when CHARACTER_LENGTH(drug.n)=1 then 
    (case when substring(drug.n from 1,1) in   (''0'',''1'',''2'',''3'',''4'',''5'',''6'',''7'',''8'',''9'') then 1 else 0 end) 


    when CHARACTER_LENGTH(drug.n)=2 then 
    (case when substring(drug.n from 1,1) in (''0'',''1'',''2'',''3'',''4'',''5'',''6'',''7'',''8'',''9'') then 1 else 0 end * 
    case when substring(drug.n from 2,1) in (''0'',''1'',''2'',''3'',''4'',''5'',''6'',''7'',''8'',''9'') then 1 else 0 end) 


    when CHARACTER_LENGTH(drug.n)=3 then 
    (case when substring(drug.n from 1,1) in (''0'',''1'',''2'',''3'',''4'',''5'',''6'',''7'',''8'',''9'') then 1 else 0 end * 
    case when substring(drug.n from 2,1) in (''0'',''1'',''2'',''3'',''4'',''5'',''6'',''7'',''8'',''9'') then 1 else 0 end * 
    case when substring(drug.n from 3,1) in (''0'',''1'',''2'',''3'',''4'',''5'',''6'',''7'',''8'',''9'') then 1 else 0 end)=1 

誰かがあなたに私に知らせることができます。私はisnumeric関数を使うことはできません。

+0

のそれとの問題はありませんうーん...あなたは '意味( '0'、 '1'、 '2'、...等)'ではなく( '' 0 ''、 '' 1 '' 'より、...など) '、そうですか? –

+2

このようなことをやりたい理由や達成しようとしていることなどについて詳しく説明できますか? – Purplegoldfish

+0

あなたはそれを試してみませんか? –

答えて

0

OK -
任意の長さ文字列に数字のみが含まれているかどうかを判断するには、再帰的なCTEを使用できます。

は、私はあなたのRDBMSが実際に再帰CTEをサポートしているかどうかわかりませんのでご注意ください、これは潜在的なソリューションです。また、私は、パフォーマンスへの影響のわからない - しかし、それは複数の CASE効果を削除しない(そして、なぜことはとにかく、実際の数値フィールドではないでしょうか?)。いくつかしないと

WITH splitstring (id, chard, start, orig) as (
        SELECT id, SUBSTRING(ch, 1, 1), 1, ch 
        FROM chartable 
        UNION ALL 
        SELECT id, SUBSTRING(orig, start + 1, 1), start + 1, orig 
        FROM splitstring 
        WHERE LENGTH(orig) > start) 
SELECT * 
FROM chartest as a 
WHERE NOT EXISTS (SELECT '1' 
        FROM splitstring as b 
        WHERE a.id = b.id 
        AND chard NOT BETWEEN '0' AND '9') 

id ch 
================ 
1 1234567890 
2 asdg  

この文は、(任意の長さの)のみ数字が含まれているすべての行を返します。このようになりますテーブルについて

だから... ...より大きな文脈の中で、あなたが達成しようとしていることを正確に知ることは幾分困難です。しかし、これはあなたのニーズに適応できるはずです。

(注意点として、iSeries版DB2は、正規表現のいずれか...をサポートしていないようです)

1

はい、あなたは、ネストされたCASEステートメントを使用することができます。 Teradataの

関連する問題

 関連する問題