2016-12-08 30 views
1

我需要一個像條件使用柱像下面的 '更新'甲骨文像模式匹配LIKE條件

UPDATE CUSTOMER_TRANSACTIONS ct 
SET PROCESSID = vQUARTER 
where ct.CUSTOMERID = l_arrc1(i).CUSTOMERID 
and ct.APPOINTOFCAID = l_arrc1(i).APPOINTOFCAID   
and ct.INVOICEID like "'"||l_arrc1(i).INVOICEID||%||"'"; 

代替

UPDATE CUSTOMER_TRANSACTIONS ct 
SET PROCESSID = '2015Q4' 
where ct.CUSTOMERID = l_arrc1(i).CUSTOMERID 
and ct.APPOINTOFCAID = l_arrc1(i).APPOINTOFCAID   
and ct.INVOICEID like '0158741%'; 

INVOICEIDl_arrc1(i).INVOICEID是VARCHAR

怎麼做?

+0

使用''%作爲佔位符 – bish

+0

動態SQL,也許.. – Nitish

+0

一個例子,請 – Giorgos

回答

0

假設INVOICEIDnumber列:

UPDATE customer_transactions ct 
    SET processid = vQUARTER 
WHERE ct.customerid = l_arrc1(i).customerid 
    AND ct.appointofcaid = l_arrc1(i).appointofcaid 
    AND to_char(ct.invoiceid) LIKE to_char(l_arrc1(i).INVOICEID) || '%'; 

如果invoiceid不是number數據類型,那麼你可以刪除to_char

+0

ct.invoiceid和INVOICEID是VARCHAR類型的,但是我做了你的更改並且不工作 – Giorgos

+0

你的意思是不工作是什麼意思?你有錯誤嗎?發佈一些示例數據和預期結果。 – San

+0

我的意思是不更新記錄 – Giorgos

1

你缺少的字符串分隔符合適,單引號:

UPDATE CUSTOMER_TRANSACTIONS ct 
    SET PROCESSID = vQUARTER 
    WHERE ct.CUSTOMERID = l_arrc1(i).CUSTOMERID and 
      ct.APPOINTOFCAID = l_arrc1(i).APPOINTOFCAID and  
      ct.INVOICEID LIKE l_arrc1(i).INVOICEID || '%' ; 

字符串在SQL適當的分隔符是單引號,而不是雙引號。

+0

Gordon Linoff不工作,如何在l_arrc1(i).INVOICEID之前添加單引號,'''不起作用 – Giorgos

+0

爲什麼在字符串之前需要單引號? 'like'接受一個字符串參數。當參數是常量時,您只需要一個單引號。 –