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