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类型,但我做了更改,但不工作您说不工作是什么意思?你有错误吗?发布一些样本数据和预期结果。