1

我正在为数据库创建一个数据质量框架,该框架查看每种数据类型的单个单元格,并查看它们的值是否可以接受。

对于数据类型字符串:我只是使用正则表达式来定义什么是有效的

对于其他数据类型(Integer、Timestamp、Boolean、TimeDelta、Float、...):我没有任何标准的方法来记录什么是有效的

其他数据类型是否有等效于正则表达式的方法?像 IntegerRegEx 的?例如,假设我有一个字段必须包含 0 到 65535 之间的数字,或者我有一个只能包含奇数的字段......

如果这个 IntegerRegEx 也是一个字符串(就像普通的 RegEx 一样),那就太好了,这样我就可以将 IntRegEx 和 StringRegEx 存储在同一个表中。

提前致谢!

4

2 回答 2

0

我猜这取决于你用什么语言编程,比如 PHP,你可以存储一个数学表达式(一个字符串),例如$x >= 0 && $x <= 65535$x % 2 == 1.

使用正则表达式,你会写这样的东西,对吧?

if (!preg_match($regexFromDb, $fieldValueFromDb)) {
    // validation fails
}

所以对于数学表达式,你会做同样的事情,例如

$x = $fieldValueFromDb;
if (!eval("return $mathExprFromDb")) {
    // validation fails
}

这只是示例代码。当然,您应该保护您的代码免受运行任意存储的可执行代码的危险,以及防止乱码表达式使您的脚本崩溃。

我认为这是您将要获得的最接近的结果,因为您寻求的“IntegerRegEx”已经有了一个名字......数学。;)

于 2012-09-21T20:35:13.180 回答
0

如果你想要一个字符串和类似正则表达式的东西,你可以使用正则表达式。只需有一种将每种类型转换为字符串的标准方法,然后针对字符串形式编写正则表达式。对某些人来说可能很尴尬,对另一些人来说容易出错,但它很简单,不涉及创建自己的表达式语言或直接从数据库加载代码并对其进行评估。

于 2012-09-22T07:55:55.923 回答