我有一個包含兩列的表:price(int)和price_display(varchar)。price是實際的數(shù)字價格,例如“ 9990”price_display是視覺表示,例如“ $ 9.99”或“ 9.99Fr”我已經(jīng)能夠通過regexp確認(rèn)兩列是否匹配:price_display不是regexp格式(price / 1000,2)但是在不匹配的情況下,我想從price_display列中提取值并將其設(shè)置為price列,所有這些都在update語句的上下文中。我還不知道怎么做。謝謝。
3 回答

鴻蒙傳說
TA貢獻1865條經(jīng)驗 獲得超7個贊
一種方法是使用REPLACE()函數(shù):
UPDATE my_table
SET price = replace(replace(replace(price_display,'Fr',''),'$',''),'.','')
WHERE price_display not regexp format(price/1000, 2);
這適用于您提供的示例數(shù)據(jù):
'$9.99'
'9.99Fr'
在我的測試中,兩者均得出999。通過這樣的更新,重要的是要確保首先備份數(shù)據(jù)庫,并了解項目的格式。通過執(zhí)行以下查詢,您可以看到所有“壞人”:
SELECT DISTINCT price_display
FROM my_table
WHERE price_display not regexp format(price/1000, 2)
ORDER BY price_display;
添加回答
舉報
0/150
提交
取消