【发布时间】:2014-08-05 17:52:30
【问题描述】:
我创建了一个查询来查找我传递的值是字母数字还是数字 通过使用此查询:
SELECT COUNT (*)
INTO l_col
FROM DUAL
WHERE REGEXP_LIKE (l_columnvalue, '^\d+(\.\d+)?$', '');
IF l_col > 0 THEN
NULL;
ELSE
l_columnvalue := '"' || l_columnvalue || '"';
END IF;
此代码检查l_columnvalue 是否为数字,如果是,则l_col 将大于0,否则l_columnvalue 将用引号" " 括起来。
现在我想检查columnvalue是否是一个数字并且它的长度等于7。如果是这样,那么它不应该在引号""中,否则如果它是一个数字并且它的长度小于或大于超过 7 则应该用引号引起来。
我该如何使用正则表达式?
**Example :**
如果l_columnvalue 是15679 那么
query1 将返回 1,并相应地执行 if 语句。
如果是'abdg12',那么query1 将返回null,然后执行else 语句,输出为"abdg12"
现在我想如果l_columnvalue 是数字并且它的长度不是 7,例如:123
那么查询 1 不应该返回 1 而输出应该是 "123"
怎么办?
【问题讨论】:
-
请使用示例数据和所需结果编辑您的查询。
-
@GordonLinoff 完成。请检查
-
只需在 where 子句后附加
and length(l_columnvalue) = 7。