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

如何确认oracle sql中字段的格式,sql,oracle,Sql,Oracle,我需要能够检查sql查询返回的现有字段是否为指定格式。返回任何不是4种定义格式的字段 有没有一个简单的方法可以做到这一点 我目前没有任何代码,因为不确定从哪里开始 下面列出了我需要检查的格式 (1) AB0161298 [ ie 9 chars] (2) AB0161298002 [ie 12 chars] (3) ABC - AB0161298 [ie 15 chars] (4) ABC - AB0161298002 [ie 18 chars] 希望你能帮忙,或者给点建议 非常感谢--

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

有没有一个简单的方法可以做到这一点

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

下面列出了我需要检查的格式

(1) AB0161298 [ ie 9 chars] 
(2) AB0161298002 [ie 12 chars] 
(3) ABC - AB0161298 [ie 15 chars] 
(4) ABC - AB0161298002 [ie 18 chars]
希望你能帮忙,或者给点建议

非常感谢

---试试这个

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

我用下面的方法返回不应该存在的格式,效果很好。谢谢你的帮助

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个额外的格式),但是否只显示不同的格式?要得到一份只有少数人而不是几千人的名单

您可以使用正则表达式来表示regexp-LIKE将在这里起作用:首先:如果您需要显示与模型不符的值,您可以使用
选择字段名,而不是regexp-LIKE(字段名,)
。匹配模式是一个字符串(包含在
'…'
中);它应该匹配整个字段,因此它应该以
^
开头,以
$
结尾,以锚定字符串的开头和结尾;否则它应该具有结构
(..|…..|…|…|…)
,其中
是四个“好”模式
“^(..|…..|…..|…)$”
如果您需要更多帮助,请回信。如果差异纯粹是字段长度,请使用len(field)获取字段长度并从那里开始。谢谢大家-reg表达式工作正常,如果有人能够提供帮助,这只是另一个比实际问题更具阻碍性的问题,他/她不想检查列是否存在,但列中的值是否符合特定模式。另外:Oracle没有
信息\u架构