作为一个自学成才的新手,我给自己制造了一个大问题。在将数据插入数据库之前,我将字符串中的撇号 (') 转换为双引号 (""),而不是 MySQL 实际需要的反斜杠和撇号 (\')。
在我的表增长到超过 200,000 行之前,我认为最好立即纠正此问题。所以我做了一些研究,发现了 SQL REPLACE 函数,这很棒,但我现在很困惑。
在 ASP 中,我是这样做的:
str = Replace(str,"'","""")
如果我在 SQL Workbench 中查看我的数据库,我转换的符号现在是单引号 ("),这让我有点困惑。我明白为什么它从双引号变为单引号,但我不知道我是哪一个'我现在就想改变。
要使用 SQL REPLACE 解决并纠正我的问题,我现在是否将单引号 (") 转换为反斜杠和撇号 (\'),还是将双引号 ("") 转换为反斜杠和撇号 (\') ?
例如,这个:
SQL = " SELECT REPLACE(myColumn,"""","\'") FROM myTable "
or this:
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 实现这一点?