MySQL - 替换列中的字符

The*_*ver 54 mysql sql database

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

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

在ASP中,我这样做:

str = Replace(str,"'","""")
Run Code Online (Sandbox Code Playgroud)

如果我在SQL Workbench中查看我的数据库,我转换的符号现在是单引号("),这让我有点困惑.我明白为什么它从双变为单,但我不知道哪一个我'我打算现在改变.

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

例如,这个:

SQL = " SELECT REPLACE(myColumn,"""","\'") FROM myTable "
Run Code Online (Sandbox Code Playgroud)

或这个:

SQL = " SELECT REPLACE(myColumn,""","\'") FROM myTable "
Run Code Online (Sandbox Code Playgroud)

我希望我能很好地解释自己,一如既往地感激地收到任何建议.有关我的问题的任何疑问,请评论.

非常感谢

- 更新 -

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

SELECT REPLACE(caption,'\"','\'') FROM photos WHERE photoID = 3371
SELECT REPLACE(caption,'"','\'') FROM photos WHERE photoID = 3371
SELECT REPLACE(caption,'""','\'') FROM photos WHERE photoID = 3371
Run Code Online (Sandbox Code Playgroud)

然而,如果我搜索:

SELECT COUNT(*) FROM photos WHERE caption LIKE '%"%'
Run Code Online (Sandbox Code Playgroud)

我得到16,150行.

- 更新2 -

好吧,我已经创建了一个"解决方法".我设法使用这个SQL很快地编写一个ASP脚本来转换整个列:

SELECT photoID, caption FROM photos WHERE caption LIKE '%""%';
Run Code Online (Sandbox Code Playgroud)

然后在ASP中我做了:

caption = Replace(caption,"""","\'")
Run Code Online (Sandbox Code Playgroud)

但我仍然想知道为什么我无法用SQL实现这一目标?

mel*_*okb 127

只运行该SELECT语句对数据没有影响.你必须使用一个UPDATE语句REPLACE来进行更改:

UPDATE photos
   SET caption = REPLACE(caption,'"','\'')
Run Code Online (Sandbox Code Playgroud)

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

  • 非常感谢!!我现在得到它,选择会打印转换,但更新将实际更新数据库... (3认同)
  • 要在不更改数据库的情况下进行检查,请尝试:`SELECT * FROM photos WHERE LOCATE('"','\')>0` (2认同)

Uma*_*dil 13

替换下面的字符

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

< > ?
, . 
Run Code Online (Sandbox Code Playgroud)

用这个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
Run Code Online (Sandbox Code Playgroud)

  • 棒极了......一个人应该保存:) (14认同)

Nat*_*han 5

也许我会这样。

 SQL = SELECT REPLACE(myColumn, '""', '\'') FROM myTable
Run Code Online (Sandbox Code Playgroud)

我使用单引号是因为它是在 MySQL 中注册字符串表达式的单引号,至少我是这么认为的。

希望有帮助。