我使用Oracle 11g作为数据库,并使用PL/SQL作为SQL语言来验证表内的某些列。如何在PL/SQL中使用RegExp验证城市名称
要求(S):
验证了 “城市名称”,使其只包含字母字符和没有数字。
可以包含圣何塞或旧金山等城市的空间。
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;
这工作时,我传递一个城市名称,如“图森”,而不是当有一个空间,例如旧金山或洛杉矶。
欢迎任何提示/建议/建议!
感谢您抽出宝贵的时间阅读这...
[:空间:]是POSIX字符类。它包括空格,换行符,垂直制表符,水平制表符。你的意思是接受那些作为城市名称的一部分?是的,我知道输入制表符可能很困难,但它会对某些查询造成严重破坏。 –
我也在想这个,但是最初的例子有'\ s',它确实包含了某些方言中的所有这些:p – fge
fge:非常感谢!是的,现在它适用于名称中包含“旧金山”和/或“洛杉矶”之间空间的城市,但是,我也需要它与其中有破折号的城市合作,如“KAILUA-KONA” 。尝试使用^ [A-Z] +([[ - ]] [A-Z] +)* $但它不起作用。感谢所有的帮助。 –