我有一个原始数据持续时间列值,如
| duration |
100
50
2.3
4.2
1.23
1996/09/02
12-05-1997
12-05-1997 10:20:05
stack Overflow
10:02:28
从上面的持续时间列中,我想过滤掉并查看每种类型的值来进行预处理。所以我只想提取Double值(2.3,4.2,1.23(,只选择Date值(1996/09/021997年5月12日(,仅选择时间戳(12-05-1197 10:20:05(,仅选择时间值(10:02:28(仅字符串(堆栈溢出(
我必须为每个类别选择哪些选择查询?
我们将非常感谢您的帮助。感谢
您可以使用REGEXP
执行以下操作
(在正则表达式中,^表示开始,$表示结束(
SELECT t1
FROM test
WHERE t1 REGEXP '^[0-9]+$' != 1
or t1 like '%.%'
演示:http://sqlfiddle.com/#!9/b0af4d/3
对于您的示例数据,您可以使用like
。
对于"双"值,可以使用:
where duration like '%.%'
日期:
where duration like '%-%-%' or duration like '%/%/%'
这些是而不是的通用目的。但是它们适用于您提供的数据,并且like
可能比正则表达式更快。