Sql 类Oracle模式匹配类条件

Sql 类Oracle模式匹配类条件,sql,oracle,Sql,Oracle,我需要在类似“更新”的条件下使用列 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

我需要在类似“更新”的条件下使用列

 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%';
INVOICEID
l_arrc1(i).INVOICEID
是VARCHAR


如何做到这一点?

字符串缺少合适的分隔符,单引号:

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中字符串的合适分隔符是单引号而不是双引号。

假设
INVOICEID
number
列:

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
数据类型,那么您可以删除
到_char

使用
%
作为占位符动态SQL,可能..例如,
l\u arrcl
中的
invoiceid
的数据类型是什么?
客户交易
中的
发票ID
的dtaa类型是什么?Gordon Linoff不工作,如何在l\u arrc1(i)之前添加一个单引号。发票ID,''不工作为什么在字符串之前需要一个单引号
like
接受字符串参数。当参数为常量时,您只需要一个引号。ct.invoiceid和invoiceid为VARCHAR类型,但我做了更改,但不工作您说不工作是什么意思?你有错误吗?发布一些样本数据和预期结果。