使用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