Mysql Windows路径更新

Mysql Windows路径更新,mysql,sql,Mysql,Sql,在更新表中存储的路径子字符串时,我遇到了一个问题。我需要将列路径的子字符串C:\ProgramFiles(x86)更改为%APPDATA% 下面是SQL,此SQL不更新路径,显示0个更新的行。我做错了什么 /*Path: C:\Program Files (x86)\Fiddler2\Fiddler.exe*/ UPDATE software SET path = REPLACE(path, 'C:\Program Files (x86)', '%AP

在更新表中存储的路径子字符串时,我遇到了一个问题。我需要将列
路径的子字符串
C:\ProgramFiles(x86)
更改为
%APPDATA%


下面是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)%';

在MySQL字符串文字中,需要通过在反斜杠字符前面加上另一个反斜杠来转义反斜杠字符

作为一个简单的演示

SELECT 'C:\foo'   AS one_backslash
     , 'C:\\foo'  AS two_backslash

建议:

在运行更新之前,使用SELECT语句测试表达式

SELECT REPLACE(path, 'C:\\Program Files (x86)', '%APPDATA%') AS new_path
  FROM software s 
 WHERE path LIKE '%C:\\Program Files (x86)%'

此SQL未更新路径,显示0个更新的行。选择记录时,SQL将一直工作到“%C:%”字符串匹配。添加“%C://%”时,没有选择任何记录。原始问题显示反斜杠字符
'\'
,注释中的字符串显示正斜杠字符
'/'
。这是两个不同的角色。反斜杠字符是MySQL字符串文本上下文中的特殊字符。要获得字符串文字中的文字反斜杠字符,我们需要两个用另一个反斜杠字符转义反斜杠。。。两个反斜杠,例如,
选择“\\”
。很好的捕捉…我错过了+1以上SQL不工作。。。我也使用了下面的SQL,它给出了0条记录。。。从软件中选择*路径,如“%C:\\%”;顺便说一句,我使用Maria 5.5.6和Workbench作为客户机。@Shatru:当表中不包含任何满足WHERE子句中谓词的行时,我们希望SQL返回0行。同样,我建议在
SELECT
语句中测试表达式(包括字符串文本)。例如,此查询返回的
SELECT“%C:\\%”值是多少?执行路径中的workbench或其他东西是否解释字符串并使用反斜杠?请尝试
选择'%C:\\\%'、'%C:\\\\\\\\\\%'
以计算在MySQL/MariaDB中获得单个反斜杠字符需要在客户端的原始字符串中使用多少个反斜杠。@Shatru:在一些bash shell脚本中,使用herdocs并调用MySQL命令行客户端,我必须使用八(8)个反斜杠反斜杠字符,获取传递给MySQL的SQL文本中的两个反斜杠字符,以便MySQL看到单个反斜杠字符。