正则表达式验证Netezza DB中的数据格式

时间:2015-02-07 02:31:55

标签: regex netezza

我是Netezza数据库中的验证列,以确保所有数据格式正确。样本数据采用此格式'2014-01-21 04:43:00'

是否可以使用Netezza中的默认功能验证这一点?

3 个答案:

答案 0 :(得分:3)

感谢您的回复。

能够在您的支持下提出以下解决方案。

select SQLEXT.regexp_like('2014-01-21 04:43:00','\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$')

答案 1 :(得分:2)

正如@ScottMcG所提到的,您可以使用SQL Extension Toolkit来使用正则表达式。此示例将返回模式匹配的boolean验证。

select sql_functions.admin.regexp_like('2014-01-21 04:43:00','\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$')

答案 2 :(得分:1)

您可以使用随附的INZA包提供的isdate UDF。它是一个boolen函数,它检查输入str以根据您提供的格式进行测试。

您必须将其安装到要使用它的数据库中,例如

[nz@netezza examples]$ pwd
/nz/extensions/nz/nzlua/examples
[nz@netezza examples]$ ../bin/nzl -d testdb isdate.nzl

Compiling: isdate.nzl
####################################################################
UdxName      =  isdate
UdxType      =  UDF
Arguments    =  VARCHAR(40),VARCHAR(40)
Result       =  BOOL
Dependencies =  INZA.INZA.LIBNZLUA_3_2_0
NZUDXCOMPILE OPTIONS: (--replbyval --nullcall --unfenced --mem 2m)
CREATE FUNCTION
[nz@netezza examples]$ nzsql -d testdb -c "select isdate('2014-01-21 04:43:00','YYYY-MM-DD HH:MI:SS');"
 ISDATE
--------
 t
(1 row)

[nz@netezza examples]$ nzsql -d testdb -c "select isdate('2014-01-21 44:43:00','YYYY-MM-DD HH:MI:SS');"
 ISDATE
--------
 f
(1 row)