0

我想添加一个检查约束来检查一个字段是否有最大数量的 X 个空格“”。我在 oracle 网站上找不到任何关于它的信息。有人知道这是否可能吗?也许通过 PL/SQL 函数?

4

2 回答 2

5

如果您通过计算空格数来定义一个单词,那么您可能会执行以下操作:

constraint check_ws_count check (length(regexp_replace(field,'[^ ]','')) <= 99)

但是,这并没有考虑双倍间距等。也许您可以将其调整为更健壮,但这似乎不是一个好主意!


编辑使用regexp_count并考虑多个间距:

constraint check_ws_count check (regexp_count(field, '\s+') <= 99)
于 2012-10-26T15:44:04.903 回答
2

可能这样的事情应该可以解决问题:

check (length(field) - length(replace(field, ' ', '')) <= 99)

这种方法也适用于那些停留在 Oracle 9i 或更早版本的数据库上而没有regexp_函数系列的人。

于 2012-10-26T15:43:17.220 回答