如何确认oracle sql中字段的格式
我需要能够检查sql查询返回的现有字段是否为指定格式。返回任何不是4种定义格式的字段 有没有一个简单的方法可以做到这一点 我目前没有任何代码,因为不确定从哪里开始 下面列出了我需要检查的格式如何确认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] 希望你能帮忙,或者给点建议 非常感谢--
(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架构