如何确认oracle sql中某个字段的格式



我需要能够检查从sql查询返回的现有字段是否为指定格式。返回不属于这4种定义格式的任何字段。

是否有简单的方法来做到这一点?

我目前没有任何代码,因为不确定从哪里开始。

我需要检查的格式如下所列。

(1) AB0161298 [ ie 9 chars] 
(2) AB0161298002 [ie 12 chars] 
(3) ABC - AB0161298 [ie 15 chars] 
(4) ABC - AB0161298002 [ie 18 chars]

希望你能帮忙,或者给一些建议。

Many thanks

我在下面使用返回不应该存在的格式,工作正常。谢谢你的帮助。

select * from table where field NOT IN 
( select field from table
where regexp_like(field,'^[A-Z][A-Z0-9][A-Z0-9] [-] [A-Z0-9]{9}$') 
OR regexp_like(field,'^[A-Z][A-Z0-9][A-Z0-9] [-] [A-Z0-9]{12}$') OR 
regexp_like(field,'^[A-Z0-9]{9}$') OR regexp_like(field,'^
[[A-Z0-9]{12}$'));

我现在唯一的问题是它已经返回了数千个不同的字段(大多数相同的格式,意味着只有1或2个额外的格式),但无论如何都只显示不同的格式吗?为了得到一个只有几个而不是几千个的名单?

——试试这个

SELECT column_name, data_type
FROM   information_schema.columns
WHERE  table_name = 'table_name'
ORDER  BY ordinal_position

最新更新