2017-11-19 44 views
-1

数値(負の値を含む)、アルファベット、英数字、および単一文字の記号( - 、&、@など)を持つ列があります。SQL - 数字の数値だけを取得し、アルファベットと文字ではない列から取得する

アルファベット、英数字、記号を取り除き、列の合計を得る方法。

私は条件文をどこの条件にも使用しないでください。他の列の結果に影響を与えるべきではないためです。

これは私が試したものです:これはどのように

SELECT COUNT(*), CASE 
    WHEN REGEXP_LIKE(REMD_PART_CSN, '^-?[0-9]\d*(\.\d+)?$') THEN SUM(REMD_PART_CSN) 
    ELSE NULL 
END 
FROM <TABLE> 

column values

+1

あなたはどのdbmsを使用していますか? –

+1

あなたが試したことを示し、いつまで止まったのかを示します。 ?。 –

+0

Oracle Database 11gのEnterprise Editionのリリース11.2.0.4.0 –

答えて

2

SELECT 
    COUNT(*), 
    SUM(
     CASE 
      WHEN REGEXP_LIKE(REMD_PART_CSN, '^-?\d+(\.\d+)?$') 
       THEN CAST(REMD_PART_CSN AS NUMBER) 
      ELSE 0 
     END 
    ) 
FROM yourtable 

e.e.e.すべての行について、REMD_PART_CSNが数字のように見える場合は数字に変換し、そうでない場合は0を使用してください。最後に、これらすべての値の合計を返します。

+0

ORA-00932 FROM(REMD_PART_CSN) ELSE NULL END :一貫性のないデータ型:期待CHARだNUMBER 00932. 00000 - "一貫性のないデータ型:期待%sが得%sの" –

+0

@SelvathalapathyS今はどう? – melpomene

+0

そのメルポメーネ –

関連する問題