MySQL – 在列中replace字符

作为一个自学成才的新手,我为自己创造了一个很大的问题。 在将数据插入到数据库之前,我已经将string中的撇号(')转换为双引号(“”),而不是所需的反斜杠和撇号(\),这是MySQL实际需要的。

在我的表增长超过20万行之前,我认为最好立即纠正这个问题。 所以我做了一些研究,发现了SQL REPLACE函数,这很好,但我现在感到困惑。

在ASP中,我是这样做的:

str = Replace(str,"'","""") 

如果我在SQL Workbench中查看我的数据库,那么我转换的符号现在是一个单引号(“),这让我困惑了一些,我明白为什么它会从double变成single,但是我不知道是哪一个,米意思是现在正在改变。

为了通过使用SQL REPLACE来解决我的问题,现在是将单引号(“)转换为反斜杠和撇号(\),还是将双引号(”“)转换为反斜杠和撇号(\) ?

例如,这个:

 SQL = " SELECT REPLACE(myColumn,"""","\'") FROM myTable " 

或这个:

 SQL = " SELECT REPLACE(myColumn,""","\'") FROM myTable " 

我希望我自己解释清楚,一如既往地感激地接受任何build议。 有关我的问题的任何疑问,请评论。

非常感谢

– 更新 –

我已经尝试了以下查询,但仍然无法更改数据中的(“):

 SELECT REPLACE(caption,'\"','\'') FROM photos WHERE photoID = 3371 SELECT REPLACE(caption,'"','\'') FROM photos WHERE photoID = 3371 SELECT REPLACE(caption,'""','\'') FROM photos WHERE photoID = 3371 

但是,如果我search:

 SELECT COUNT(*) FROM photos WHERE caption LIKE '%"%' 

我得到16,150行。

– 更新2 –

那么,我已经创build了一个“解决方法”。 我设法很快地使用这个SQL编写一个ASP脚本来转换整个列:

 SELECT photoID, caption FROM photos WHERE caption LIKE '%""%'; 

然后在ASP中,我做了:

 caption = Replace(caption,"""","\'") 

但是我仍然想知道为什么我无法用SQL实现这个function?

只要运行SELECT语句就不会影响数据。 您必须使用REPLACEUPDATE语句来进行更改:

 UPDATE photos SET caption = REPLACE(caption,'"','\'') 

这是一个工作示例: http : //sqlize.com/7FjtEyeLAh

replace下面的字符

 ~ ! @ # $ % ^ & * ( ) _ + ` - = { } | [ ] \ : " ; ' < > ? , . 

与此SQL

 SELECT note as note_original, REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(note, '\"', ''), '.', ''), '?', ''), '`', ''), '<', ''), '=', ''), '{', ''), '}', ''), '[', ''), ']', ''), '|', ''), '\'', ''), ':', ''), ';', ''), '~', ''), '!', ''), '@', ''), '#', ''), '$', ''), '%', ''), '^', ''), '&', ''), '*', ''), '_', ''), '+', ''), ',', ''), '/', ''), '(', ''), ')', ''), '-', ''), '>', ''), ' ', '-'), '--', '-') as note_changed FROM invheader 

也许我会走这个。

  SQL = SELECT REPLACE(myColumn, '""', '\'') FROM myTable 

我使用了单引号,因为那是在MySQL中注册stringexpression式的,或者我相信。

希望有所帮助。

如果你有“某些东西”,需要“某些东西”,用replace(col, "\"", "\'")和反之亦然。