使用REGEXP_LIKE
SELECT t.*,
CASE
WHEN REGEXP_LIKE(column1, '^[0-9]+$') THEN 'Numeric'
ELSE 'Char'
END data_type
FROM table1 t;
,沒有它
SELECT t.*,
CASE
WHEN LENGTH(TRIM(TRANSLATE (column1, '',' '))) IS NULL THEN 'Numeric'
ELSE 'Char'
END data_type
FROM table1 t;
這裏是SQLFiddle演示
兩個v ersions可以根據需要
UPDATE進行調整,以適應期,加號和減號作爲@tbone正確地評價這些查詢沒有分別的時候考慮到NULL
S和返回「炭」和「數字」作爲DATA_TYPE column1的值是NULL
。
至少有兩個選項是如何對付它:
首先只需使用NULL
值過濾掉行,如果我們不感興趣
...
WHERE column1 IS NOT NULL
二介紹NULL
(顯然它可以是'N/A'或其他)數據類型CASE
SELECT t.*,
CASE
WHEN column1 IS NULL THEN NULL
ELSE CASE
WHEN REGEXP_LIKE(column1, '^[0-9]+$') THEN 'Numeric'
ELSE 'Char'
END
END data_type
FROM table1 t
這裏更新SQLFiddle演示
謝謝。 ♥它的作品:) –
@ R.S不客氣。我很高興它幫助:) – peterm
+1偉大的答案。 – ankurtr