我有一个包含两列的表:price(int)和price_display(varchar)。price是实际的数字价格,例如“ 9990”price_display是视觉表示,例如“ $ 9.99”或“ 9.99Fr”我已经能够通过regexp确认两列是否匹配:price_display不是regexp格式(price / 1000,2)但是在不匹配的情况下,我想从price_display列中提取值并将其设置为price列,所有这些都在update语句的上下文中。我还不知道怎么做。谢谢。
3 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
一种方法是使用REPLACE()函数:
UPDATE my_table
SET price = replace(replace(replace(price_display,'Fr',''),'$',''),'.','')
WHERE price_display not regexp format(price/1000, 2);
这适用于您提供的示例数据:
'$9.99'
'9.99Fr'
在我的测试中,两者均得出999。通过这样的更新,重要的是要确保首先备份数据库,并了解项目的格式。通过执行以下查询,您可以看到所有“坏人”:
SELECT DISTINCT price_display
FROM my_table
WHERE price_display not regexp format(price/1000, 2)
ORDER BY price_display;
添加回答
举报
0/150
提交
取消