2017-08-07 51 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 ;