2017-08-07 58 views
-3

查询需要为以下书面:
优先逻辑1:
L/M
N/O
优先逻辑2:
而如果L/M在两个ID号码1和2的IDNumber然后ID号码1优先
而如果在两个ID号码1和2的IDNumber N/O然后ID号码1优先
对于例如:
ID号码1点的ID号2的预期输出 L1234589O L8906565I L1234589O N5896812I L1234353K L1234353K的Oracle SQL查询为优先级逻辑

现在,我要写入的查询

插入到lmno_extract_stg值(情况下,当REGEXP_LIKE( idnumber1, '^ [LMNO] [0-9] {7} [AZ] $', 'I') 然后idnumber1别的idnumber2端);

此查询工作不正常。始终以ID号码1为优先。

请帮

+0

可否请格式化一下你的信息,这是不可能的。 – Steven

+0

完成更改 – BasicCoder

+0

什么是您的表格结构? – Steven

回答

1

如果给你id_number1所有的时间,它只是意味着它每一次你的正则表达式匹配'^[LMNO][0-9]{7}[A-Z]$'。检查你的数据。

您正则表达式的意思是:

  1. 第一个字母是L或M或N或O
  2. 然后你有7个数字
  3. 然后一个大写字母
+0

是的。它总是给我1个数据。这些是我在这里给出的样本数据。但我想根据优先次序逻辑 – BasicCoder

+0

在您的样本数据的输出,所有的例子正则表达式匹配,这就是为什么您会收到1 – Steven

+0

,但我想执行的优先逻辑.. – BasicCoder

1

假设这两个ID是单表的列,查询将看起来像这样

select idnum1,idnum2, 
      case when substring(idnum1,1,1) = substring (idnum2,1,1) then idnum1 
       when substring(idnum1,1,1) < substring(idnum2,1,1) then idnum1 
       else idnum2 
       end as idnumber 
    from idnumber ;