Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-替换列中的字符_Mysql_Sql_Database - Fatal编程技术网

MySQL-替换列中的字符

MySQL-替换列中的字符,mysql,sql,database,Mysql,Sql,Database,作为一个自学成才的新手,我给自己制造了一个大问题。在将数据插入数据库之前,我已经将字符串中的撇号(')转换为双引号(“”),而不是MySQL实际需要的反斜杠和撇号(\') 在我的表增长超过200000行之前,我认为最好立即纠正这个问题。所以我做了一些研究,发现了SQLReplace函数,这很好,但我现在感到困惑 在ASP中,我是这样做的: str = Replace(str,"'","""") 如果我在SQL Workbench中查看我的数据库,我转换的符号现在是一个单引号(“),这让我有点困

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

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

在ASP中,我是这样做的:

str = Replace(str,"'","""")
如果我在SQL Workbench中查看我的数据库,我转换的符号现在是一个单引号(“),这让我有点困惑。我理解为什么它从双引号变为单引号,但我不知道我现在要更改的是哪一个

要使用SQLReplace检查并纠正我的问题,我现在是将单引号(“)转换为反斜杠和撇号(\')还是将双引号(“”)转换为反斜杠和撇号(\')

例如,这:

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 '%"%'
我有16150行

--更新2--

好的,我创建了一个“变通方法”。我使用以下SQL,通过编写ASP脚本,很快地转换了整个列:

SELECT photoID, caption FROM photos WHERE caption LIKE '%""%';
然后在ASP中我做了:

caption = Replace(caption,"""","\'")
但是我仍然想知道为什么我不能用SQL实现这一点?

如果你有“某物”并且需要“某物”,请使用
replace(col,“\”,“\”)
和viceversa.

也许我会这样做

 SQL = SELECT REPLACE(myColumn, '""', '\'') FROM myTable
我使用单引号是因为它在MySQL中注册字符串表达式,或者我认为是这样


希望对您有所帮助。

仅运行
SELECT
语句不会对数据产生任何影响。您必须使用
UPDATE
语句和
REPLACE
来进行更改:

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

这是一个工作示例:

替换下面的字符

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

< > ?
, . 
~!@$%^&*( ) _ +
` - = 
{ } |
[ ] \
: " 
; '
< > ?
, . 
使用此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注入的攻击注意,在
ASP
中,使用
呈现为单引号(
)的值,而不是双引号(
),因为在字符串内部,引号被表示(转义)通过两个引号。这是我接下来要学习的内容John,是的。我有一个正则表达式函数,它可以检查输入值和查询字符串中的恶意内容,但我确信这并不安全……感谢mellamokb,但正如我在问题中所说的,我确实理解它们为什么改为单引号。我现在需要知道的是,我如何在中引用它们replace函数。我现在是替换double还是singles?这不起作用,我在一行上运行了它,检查了该行,它仍然包含(“)子字符串(data,1,LEN(data))-我不确定参数中是1还是2,但这将从字符串中删除第一个和最后一个字符,所以“whater”或“whater”应该作为whater输出。没有问题