我在一個表中有近2000行(「傳感器」,它有2000多行),我需要更新一列,傳感器名稱。使用regexp_replace的Oracle sql更新
更新內的替換部分基於另一個表deviceport的內容。
Deviceport通過此deviceportid列與sensor更新表相關 - sensor.deviceportid = deviceportid。因此,每一行的實際更新都不相同。我不想寫2000更新語句,但我一直無法弄清楚我的「where」語句會說什麼。
UPDATE sensor sn SET sn.sensorname = (
SELECT REGEXP_REPLACE(
sensorname,
'^P(\d)',
'J ' || (
SELECT d.deviceportlabel
FROM deviceport d
WHERE d.deviceportid = s.deviceportid
) ||
' Breaker \1'
)
FROM sensor s
WHERE REGEXP_LIKE(sensorname, '^P(\d)')
)
WHERE ...?
任何線索?
請簡要** **解釋你的代碼。 –
@StéphaneBruckert - 我的代碼非常類似於OP的代碼。你究竟是不明白的? –
forhead * smack * - 當然!謝謝! – GLaDOS