我需要验证数据类型并标记它是数字还是日期。例如表中的数据如下所示:
COL_VALUE
----------
'ABC',
'123',
'10/23/2024',
'1/1/2025 10 PM'
'1/2/2000 10:10:10',
'100.23'
'23,33,33.30'
我需要输出类似:
COL_VALUE IS_NUMBER IS_DATE
------------------------------------------------------------------
'ABC', N N
'123', Y N
'10/23/2024', N Y
'1/1/2025 10 PM' N Y
'1/2/2000 10:10:10' N Y
'100.23' Y N
'23,33,33.30' Y N
到目前为止,我已经尝试过
VALIDATE_CONVERSION
功能,但是,我想知道是否有更好的方法来完成数据类型检查。
为了获得所需的输出,您可以使用 SQL 函数来验证 COL_VALUE 列中每个值的数据类型。这是使用 Oracle SQL 的方法:
SELECT
COL_VALUE,
CASE
WHEN REGEXP_LIKE(COL_VALUE, '^\d+(\.\d+)?$') THEN 'Y' -- Check if the value is a number
ELSE 'N'
END AS IS_NUMBER,
CASE
WHEN REGEXP_LIKE(COL_VALUE, '^\d{1,2}/\d{1,2}/\d{4}(\s\d{1,2}:\d{2}(:\d{2})?)?$') THEN 'Y' -- Check if the value is a date
ELSE 'N'
END AS IS_DATE
FROM
YOUR_TABLE;
此查询使用正则表达式来验证 COL_VALUE 列中的值是数字还是日期。
REGEXP_LIKE
函数检查值是否与指定模式匹配。如果匹配,则返回“Y”;否则,返回“N”。
请将
YOUR_TABLE
替换为包含 COL_VALUE 列的表的实际名称。此外,根据您的数据格式和要求,根据需要调整正则表达式模式。