我在更新存储在表中的路径的子字符串时遇到问题。我需要将列C:\Program Files (x86)
的子字符串%APPDATA%
更改为path
。
下面是SQL,这个SQL没有更新路径,显示0个更新的行。我在这做错了什么?
/*Path: C:\Program Files (x86)\Fiddler2\Fiddler.exe*/
UPDATE software
SET path = REPLACE(path, 'C:\Program Files (x86)', '%APPDATA%')
WHERE path LIKE '%C:\Program Files (x86)%';
答案 0 :(得分:3)
在MySQL字符串文字中,反斜杠字符需要通过在其前面加上另一个反斜杠进行转义。
作为一个简单的演示...
SELECT 'C:\foo' AS one_backslash
, 'C:\\foo' AS two_backslash
建议:
在运行UPDATE之前使用SELECT语句测试表达式
SELECT REPLACE(path, 'C:\\Program Files (x86)', '%APPDATA%') AS new_path
FROM software s
WHERE path LIKE '%C:\\Program Files (x86)%'