检查SQL中的字符串格式 - ORACLE

时间:2014-04-07 11:59:58

标签: sql oracle

我有大约50种不同的字符串格式(例如00-000-000,123-456-789-123AAA,CHE-123.456.789IVA ......等)。这些是不同国家的TAX注册号码格式。我需要检查每个公司税务登记号码是否符合其国家格式。我需要检查两个级别的一致性 1.字符串和子字符串的位数(例如11-111-11中第一个短划线之前的两位数字等)
2.每个字符串的数字类型(字符数)。

这可能在SQL中吗?我尝试了一些函数,但都考虑了字符串的大小和长度,而不是格式。

1 个答案:

答案 0 :(得分:3)

最好使用正则表达式。但是你必须为所有国家格式定义它们。这个是社会安全号码: 3个数字,短划线,2个数字,短划线,4个数字。

create table re (country varchar2(10),reg varchar2(100));

insert into re values ('us','^[0-9]{3}-[0-9]{2}-[0-9]{4}$');

select 
   case when regexp_like('987-65-4321' ,reg) 
      then 'Match Found' 
      else 'No Match Found' 
   end as output 
from re
where country = 'us';

Match Found