mysql转义字符

xfyts7mz  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(420)

在sql(mysql语法)中,如何用一个特殊字符替换另一个特殊字符是我非常困难的。我已经尝试过替换函数,但没有成功。我想做的是:
从此字符串:

"C:\foo\bar\file.txt"

获取此字符串:

"C:\\foo\\bar\\file.txt"
lo8azlld

lo8azlld1#

正如我所想-这是一个xy问题。mysql不需要来自路径的任何东西。但它确实需要的是它的输入是语法的。在输入中,字符串文字将反斜杠和另一个字符的序列解释为“escape”,这将删除下一个字符的特殊含义。因为反斜杠是这样一个特殊的字符,所以可以对它进行转义以消除它的特殊意义:一个 \\ 得到一个带反斜杠的字符串。
这意味着,如果你写 'C:\\foo\\bar\\file.txt' 在sql命令中,mysql将其理解为字符串 'C:\foo\bar\file.txt' (就像我在你的问题下的评论)。如果你写信 'C:\foo\bar\file.txt' ,mysql会将反斜杠理解为删除字母的特殊意义 f , b 以及 f (并不是说他们一开始就有),最后的绳子是 'C:foobarfile.txt' .
一旦字符串在mysql中,它就是正确的,不需要替换。因此,您不能使用mysql的 REPLACE 准备输入mysql的字符串-现在已经太迟了。这有点像在宝宝已经吃过食物后,用拳头打他的胃来预先咀嚼食物,这样不起作用,而且会伤害宝宝。
与其这样,不如使用与数据库接口的语言(您没有标记它,因此我无法提供详细信息)来正确处理字符串。许多语言都有函数可以正确地转义字符串供mysql使用。更好的是,了解预处理语句和参数化查询,它们完全消除了显式转义的需要。
关于参数化查询,我可以推荐的最好的参考是bobby tables站点,它可以解决多种语言的问题。

bmp9r5qi

bmp9r5qi2#

替换功能应该为您完成任务-https://dev.mysql.com/doc/refman/8.0/en/replace.html.
如何将字符串传递到replace函数中?

相关问题