Подтвердить что ты не робот

MySQL - Заменить символ в столбцах

Будучи новичком-самоучкой, я создал для себя большую проблему. Прежде чем вставлять данные в мою базу данных, я конвертировал апострофы (') в строку, чтобы удвоить кавычки ("") вместо требуемого обратного слэша и апострофа (\), которые на самом деле требуется 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 -

Ну, я создал "обходной путь". Мне удалось преобразовать целый столбец довольно быстро, написав ASP script, используя этот SQL:

SELECT photoID, caption FROM photos WHERE caption LIKE '%""%';

а затем в ASP я сделал:

caption = Replace(caption,"""","\'")

Но мне все же хотелось бы знать, почему я не смог добиться этого с помощью SQL?

4b9b3361

Ответ 1

Просто запуск оператора SELECT не повлияет на данные. Вы должны использовать оператор UPDATE с REPLACE, чтобы внести изменения:

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

Вот рабочий пример: http://sqlize.com/7FjtEyeLAh

Ответ 2

Заменить ниже символы

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

< > ?
, . 

с этим 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

Ответ 3

Если у вас есть "что-то" и нужно "что-то", используйте replace(col, "\"", "\'") и наоборот.

Ответ 4

Возможно, я поеду этим.

 SQL = SELECT REPLACE(myColumn, '""', '\'') FROM myTable

Я использовал одиночные кавычки, потому что тот, который регистрирует строковые выражения в MySQL, или, как я полагаю,

Надеюсь, что это поможет.