SQL Update语句含单双引号的字段值处理方法咨询
解决SQL Update语句中SET子句包含单引号的问题
嘿,这个问题我太熟了!SQL里字符串内部的单引号确实是个容易踩坑的点,咱们一步步来搞定你这个Update语句的问题。
问题根源
你写的语句里,info字段的值是用单引号包裹的,但字符串内容里又出现了单引号(比如LinkAction('togglemore', 'companies','jobs')里的引号),SQL会把第一个内部单引号当成整个字符串的结束标记,直接导致语法报错。
解决方法:转义单引号
在SQL的字符串语法里,**要在单引号包裹的字符串中表示一个普通单引号,只需要把它换成两个连续的单引号('')**就可以了。双引号在大多数数据库里不需要额外转义(只要它是字符串内容的一部分,不是用来引用标识符的),所以不用管它。
把你的语句修改后应该是这样:
UPDATE Users SET info = '[user{"LinkAction(''togglemore'', ''companies'',''jobs'')","IsVisible":true}]' WHERE user LIKE '%admin%'
简单说就是把原字符串里的每个'都替换成'',这样SQL就会正确识别这些单引号是字符串内容的一部分,而不是结束符啦。
额外建议:用参数化查询更稳妥
如果是在应用程序里执行这条语句,更推荐用参数化查询(比如Prepared Statement),这样不仅不用手动转义引号,还能避免SQL注入的风险,安全性和可读性都会更好。不过如果是直接在数据库客户端执行,上面的转义方法就足够用了。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

