作为一个自学成才的新手,我为自己创造了一个大问题。在将数据插入数据库之前,我一直在将字符串中的撇号(’)转换为双引号(“”),而不是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
来进行更改:
UPDATE photos
SET caption = REPLACE(caption,'"','\'')
这是一个工作示例:http :
//sqlize.com/7FjtEyeLAh
问题内容: 我有一列包含网址(ID,网址)的列: 我想将“更新”一词更改为“新闻”。是否可以使用脚本执行此操作? 问题答案: 现在的行就像 将会 http://www.electrictoolbox.com/mysql-find-replace- text/
问题内容: 我需要通过使用命令替换表的列中的一些字符。 我知道该命令需要一个列名,然后是要更改的文本(在以下示例中为“ a”字符)和新文本(在以下示例中为“ e”字符)。 这样执行该命令将用’ e* ‘字符更改表的列中所有’ a ‘出现次数。 * 但是,如果我需要为每一列而不只是为每一列执行命令,该怎么办?这可能吗? 谢谢 问题答案: 使用以下SQL查询来生成您需要替换所有列中的值的SQL查询。
问题内容: 有没有更短的方法可以编写以下代码? 注意,我不需要替换那些确切的值。我只是在寻找一种将5条以上的线变成少于5条线的方法 问题答案: 看起来是使用循环的好机会: 如果您不介意括号,则更快的方法是:
问题内容: 我想替换MySQL中VARCHAR字段中的所有非数字字符,因为它是一个电话表,在导入它们时,我发现了一些不应该存在的“ Fax:xxx”或“-”字符。 我更喜欢不涉及多个REPLACE()调用的解决方案, 提前致谢 问题答案: 这是一个mysql函数: 在更新查询中将其用作本机mysql函数。
如何用单个字符替换n/重复字符?所有特殊字符
问题内容: 我有一个日期格式为201201、201202、201203等的列。 这是一个财务数据库,因此存在期间13;但是,期间12和13合并用于报告目的。 当最后两个字符为13时,如何将其替换为12? 我开始与 但是,当然,这与2013年这一年相去甚远。 感谢收到所有建议。 问题答案: 在这种情况下,您可以使用Substring: 这是否适合您,还是您需要在过去或未来几年采用更具活力的方法?