作为一个自学成才的新手,我为自己创造了一个大问题。在将数据插入数据库之前,我一直在将字符串中的撇号(’)转换为双引号(“”),而不是MySQL实际需要的反斜杠和撇号(')。
在我的表增长超过200,000行之前,我认为最好立即解决此问题。所以我做了一些研究,发现SQL REPLACE函数很棒,但是我现在很困惑。
在ASP中,我正在这样做:
str = Replace(str,"'","""")
如果我在SQL Workbench中查看数据库,现在转换的符号是单引号(“),这让我有些困惑。我理解为什么它从双精度变为单精度,但是我不知道我是哪一个我本来打算改变的。
要使用SQL REPLACE来解决我的问题,我现在将单引号(“)转换为反斜杠和撇号('),还是将双引号(”“)转换为反斜杠和撇号(') ?
例如,这:
SQL = " SELECT REPLACE(myColumn,"""","\'") FROM myTable "
或这个:
SQL = " SELECT REPLACE(myColumn,""","\'") FROM myTable "
我希望自己能很好地解释自己,所有收到的建议一如既往。关于我的问题的任何疑问,请发表评论。
非常感谢
-更新-
我尝试了以下查询,但仍然无法更改数据中的(“):
SELECT REPLACE(caption,'\"','\'') FROM photos WHERE photoID = 3371 SELECT REPLACE(caption,'"','\'') FROM photos WHERE photoID = 3371 SELECT REPLACE(caption,'""','\'') FROM photos WHERE photoID = 3371
但是,如果我搜索:
SELECT COUNT(*) FROM photos WHERE caption LIKE '%"%'
我得到16,150行。
-更新2-
好吧,我创建了一个“解决方法”。我使用以下SQL脚本编写了ASP脚本,很快就完成了整列的转换:
SELECT photoID, caption FROM photos WHERE caption LIKE '%""%';
然后在ASP中,我做到了:
caption = Replace(caption,"""","\'")
但是我仍然想知道为什么我无法使用SQL做到这一点?
仅运行SELECT语句不会对数据产生影响。您必须在上使用一条UPDATE语句REPLACE来进行更改:
SELECT
UPDATE
REPLACE
UPDATE photos SET caption = REPLACE(caption,'"','\'')
这是一个工作示例:http : //sqlize.com/7FjtEyeLAh