使用Oracle 11g作为我的数据库,使用PL / SQL作为SQL语言来验证表中的某些列。
要求:
验证“城市名称”,使其仅包含字母字符而不包含数字。
可以包含圣何塞或旧金山等城市的空间。
function ValidateCity(city in varchar2) return varchar2 is
valid varchar2(50) := 'valid';
begin
if not REGEXP_LIKE (city, '^[A-Z\s]*$') then
valid := (case when valid = 'valid' then '' else valid end)
|| 'Does not match pattern ^[A-Z\s]*$ ';
else
valid := 'Required ';
end if;
return valid;
end;
当我传入像“图森”这样的单个城市名称时,这种方法有效,但是当有空格时,例如旧金山或洛杉矶。
欢迎任何提示/建议/建议!
感谢您抽出宝贵时间阅读此内容......
答案 0 :(得分:1)
normal* (special normal*)*
再次......
^[[:alpha:]]+([-[:space:]][[:alpha:]]+)*$
Oracle正则表达式不支持\s
,请参阅here。 [:alpha:]
和[:space:]
是POSIX字符类,并且始终需要在字符类中。 [-[:space:]]
表示“破折号或空格字符”。您可能希望将[:space:]
替换为单个空格字符。
[编辑简化:special
这里实际上只是破折号或空格]
答案 1 :(得分:0)
为了记录,Oracle确实支持Perl样式的正则表达式:Perl-Influenced Extensions