0

単一の列に存在するセット値 (上記と同様) をデータ型に分類しようとしています。問題は、Aster SQL 環境を使用していることです (機能と環境全体の可用性は非常に限られています)。もう 1 つの問題は、列に大量のジャンク値、多数の記号、文字などがあることです。これにより、問題をハードコーディングすることさえ困難になります。構造は次のようなものです。

FeatureValue
123
24
15.6
17:15
abc
12/18/2014
17/222222           
abc1200                                
001001oo             
positve+              
+1                           

ソリューションをSQLクエリにしたいと思います。最終結果は次のようになります。

FeatureValue    Type
123             Numeric
24              Numeric
15.6            Numeric
17:15           String (?time)
abc             String
12/18/2014      Date
17/222222       String
abc1200         String
001001oo        String
positve+        String
+1              String

少しコーディングしましたが、このソリューションはあまり信頼できません。私がしたことは:

case 
            when upper(trim(feature_value)) not like '%A%' and
            upper(trim(feature_value)) not like '%B%' and
            upper(trim(feature_value)) not like '%C%' and
            upper(trim(feature_value)) not like '%D%' and
            upper(trim(feature_value)) not like '%E%' and
            upper(trim(feature_value)) not like '%F%' and
            upper(trim(feature_value)) not like '%G%' and
            upper(trim(feature_value)) not like '%H%' and
            upper(trim(feature_value)) not like '%I%' and
            upper(trim(feature_value)) not like '%J%' and
            upper(trim(feature_value)) not like '%K%' and
            upper(trim(feature_value)) not like '%L%' and
            upper(trim(feature_value)) not like '%M%' and
            upper(trim(feature_value)) not like '%N%' and
            upper(trim(feature_value)) not like '%O%' and
            upper(trim(feature_value)) not like '%P%' and
            upper(trim(feature_value)) not like '%Q%' and
            upper(trim(feature_value)) not like '%R%' and
            upper(trim(feature_value)) not like '%S%' and
            upper(trim(feature_value)) not like '%T%' and
            upper(trim(feature_value)) not like '%U%' and
            upper(trim(feature_value)) not like '%V%' and
            upper(trim(feature_value)) not like '%W%' and
            upper(trim(feature_value)) not like '%X%' and
            upper(trim(feature_value)) not like '%Y%' and
            upper(trim(feature_value)) not like '%Z%' and       
            upper(trim(feature_value)) <>'' and
            upper(trim(feature_value)) not like '%+%' and 
            upper(trim(feature_value)) is not null and
            --upper(trim(feature_value))<>'-' and 
            upper(trim(feature_value))<>'NULL' and 
            upper(trim(feature_value)) not like '%/%' and 
            upper(trim(feature_value)) not like '%-%' and 
            upper(trim(feature_value)) not like '%:%' and 
            feature_value is not null 
                then 'NUMERIC'           
            else 'STRING'
        end as value_type
4

1 に答える 1