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

Posted

技术标签:

【中文标题】用于验证 Netezza DB 中数据格式的正则表达式【英文标题】:Regular Expression to verify data format in Netezza DB 【发布时间】:2015-02-07 02:31:54 【问题描述】:

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

是否可以使用 Netezza 中的默认函数来验证这一点?

【问题讨论】:

【参考方案1】:

感谢您的回复。

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

select SQLEXT.regexp_like('2014-01-21 04:43:00','\d4-\d2-\d2 \d2:\d2:\d2$')

【讨论】:

【参考方案2】:

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

select sql_functions.admin.regexp_like('2014-01-21 04:43:00','\d4-\d2-\d2 \d2:\d2:\d2$')

【讨论】:

【参考方案3】:

您可以使用随附的 INZA 软件包提供的 isdate UDF。这是一个布尔函数,用于检查输入 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)

【讨论】:

感谢您的回复。就我而言,我没有安装权限。那么,除了这个,还有其他选择吗? 除了 SQL Extension Toolkit 中可用的 regexp 函数,它也包括在内,但也必须由管理员安装,我不知道在 Netezza 中使用UDF,必须安装。对不起!

以上是关于用于验证 Netezza DB 中数据格式的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

请提供用于处理 netezza 数据库的 DB 可视化工具的替代方法 [关闭]

用于将数字 YYYYMMDD 格式转换为日期的 Netezza SQL 语法

用于在 SQL Server 中验证表名的正则表达式(数据库兼容级别 120)[关闭]

由于日期格式,将数据从 txt 文件导入 IBM netezza SQL 数据库时出错

使用 Python 从 Netezza 中的表列表中获取记录计数

用于从 Netezza 到 HDFS 的数据传输的 Sqoop 作业