我有大约50种不同的字符串格式(例如00-000-000,123-456-789-123AAA,CHE-123.456.789IVA ......等)。这些是不同国家的TAX注册号码格式。我需要检查每个公司税务登记号码是否符合其国家格式。我需要检查两个级别的一致性
1.字符串和子字符串的位数(例如11-111-11中第一个短划线之前的两位数字等)
2.每个字符串的数字类型(字符数)。
这可能在SQL中吗?我尝试了一些函数,但都考虑了字符串的大小和长度,而不是格式。
答案 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