簡體   English   中英

如何匹配最長的字符串並更新值?

[英]How to match the longest string and update the value?

我需要比較和匹配兩個不同表中兩個字符串的最長匹配項,如果存在最接近的匹配項,則更新一個值。

Table 1     Table 2
stack1     stack2
ABCDEFG    ABC
GHIJKLM    ABCDE
PQRSUVW    ABCDEF

我需要比較這兩個表並匹配一個壁櫥,並將表1第一行更新為最接近的匹配ABCDEF,請有人幫幫我。 我被困在這里。

這是我的查詢

UPDATE table1 A 
   SET A.stack1 = (SELECT DISTINCT B.stack2 
                     FROM table2 B 
                    WHERE A.stack1 LIKE CONCAT(B.stack2,'%')) 
 WHERE name = 'name';

此查詢正在收到一個錯誤,稱為

ORA-01427:單行子查詢返回多個行

您需要使子查詢僅返回一個匹配項(最長的匹配項)。 以您的情況,MAX應該這樣做。

UPDATE table1 A 
SET A.stack1 = (SELECT Max( B.stack2 )
                 FROM table2 B 
                WHERE A.stack1 LIKE CONCAT(B.stack2,'%')) 
WHERE name = 'name';

另外,您應該考慮什么都不匹配的情況。

ORA-01427錯誤表示子查詢返回多個值-即使使用DISTINCT

您需要更正返回多個不同值的案例。 可能有一個匯總函數,例如MAXMIN ,但是由於沒有細節,我會毫不猶豫地提出建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM