Mysql 替换字符串中的撇号

Mysql 替换字符串中的撇号,mysql,Mysql,我有两个数据库。一个人的名字中有撇号,比如奥班农,而另一个人没有。我需要合并它们并找到重复的。因为添加撇号比较困难,所以我尝试删除它们 但是这个 UPDATE Client SET Last_Name = REPLACE(''','') 显然不行。一个人怎样才能摆脱“恐惧” 我使用的是Xojo(不是PHP)只需在引号前面添加一个转义字符(\): 设置Last\u Name=REPLACE('\'','') 我仍然认为这不是正确的方法,因为您将丢失此人的原始姓名信息,因此o'reilly和ore

我有两个数据库。一个人的名字中有撇号,比如奥班农,而另一个人没有。我需要合并它们并找到重复的。因为添加撇号比较困难,所以我尝试删除它们

但是这个

UPDATE Client
SET Last_Name = REPLACE(''','')
显然不行。一个人怎样才能摆脱“恐惧”


我使用的是Xojo(不是PHP)

只需在引号前面添加一个转义字符(
\
):

设置Last\u Name=REPLACE('\'','')

我仍然认为这不是正确的方法,因为您将丢失此人的原始姓名信息,因此
o'reilly
orely
对您来说似乎是同一个姓氏。

表9.1。特殊字符转义序列

由序列表示的转义序列字符
\0一个ASCII NUL(0x00)字符。
\'一个单引号(“”)字符。
\双引号(“”)字符。
\b退格字符。
\n换行符(换行符)字符。
\r是回车符。
\不是制表符。
\Z ASCII 26(控制+Z)。见下表注释。
\\反斜杠(\)字符。
\%“%”字符。见下表注释。
\_一个“u”字符。见下表注释。
当然,如果未启用,您可以使用双引号

UPDATE Client SET Last_Name = REPLACE(Last_Name, '\'', '');

您只需要转义撇号,它将反斜杠。

就像您所说的,您需要转义引号字符

请参阅以下文档:

有几种方法可以在字符串中包含引号字符:

带“.”的字符串中的“.”可以写为““””

带“”的字符串中的“”可以写为“”

在引号字符前面加一个转义字符(\)

用“”引用的字符串中的“%”不需要特殊处理,也不需要加倍或转义。同样,用“%”引用的字符串中的““”也不需要特殊处理


不过,根据您处理SQL的方式,您可能需要做更多的工作。如果应用程序正在转义引号字符,并将其传递给存储过程调用,那么如果未对准备好的语句使用参数绑定,则可能会遇到相同的问题。这是因为MySQL在处理SP的输入时删除了转义字符。然后,未命名的字符进入查询构造,如果应该在那里转义,问题会重复。在这种情况下,您需要切换到参数绑定,这样转义和查询构造就不用您管了。

如果您只是想选择,也就是说,将字段与包含撇号的数据相匹配

SELECT PhraseId FROM Phrase WHERE Text =  REPLACE("don't", "\'", "''")

REPLACE(“\”,)
直接回答您的问题。您为什么要更改某人的姓氏?您不想要OBannon,您想要O'Bannon。数据库完全能够存储撇号!如果“O’Bannon”正在杀死您的代码,那么这个“a’;DROP TABLE Client;--”是否也会杀死您的代码?如果是这样的话,问题就出在其他地方:)@JVMX如果我的名字是O'Bannon,你会把我作为OBannon放在你的客户数据库中,我就不再是你的客户了。如果你不能正确地存储我的名字,我希望你能够正确地存储任何东西,比如信用卡数据等。他们不会丢失信息,他们会丢失信息,更糟糕的是。我有两个数据库,我与创建数据库无关。一个人有撇号,一个人没有。我需要合并它们并找到重复的。如果您能为我编写一些代码,将它们放在缺少它们的地方,我将很乐意记住所有的“不要更改名称”注释……有关SQL注入的更多信息,请参阅和。