MySQL - カラムの文字を置換する

独学で勉強している初心者の私は、自分で大きな問題を作り出してしまいました。データベースにデータを挿入する前に、文字列中のアポストロフィ(')をダブルクォート("")に変換していたのですが、実際にはMySQLが要求するバックスラッシュとアポストロフィ( \' )が必要でした。

私のテーブルが20万行以上になる前に、この問題をすぐに修正するのが最善だと思いました。そこで、いろいろ調べてみると、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 --

さて、私は 'workaround' を作成しました。このSQLを使って、ASPスクリプトを書いて、かなり早く列全体を変換することに成功しました。

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

を、ASPでやってみた。

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

しかし、なぜSQLで実現できなかったのか、その理由を知りたいのです。

質問へのコメント (4)
ソリューション

SELECTステートメントを実行しただけでは、データには何の影響もありません。 REPLACEと一緒にUPDATEステートメントを使用しないと、変更は発生しません。

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

以下は動作サンプルです。http://sqlize.com/7FjtEyeLAh

解説 (4)

以下の文字を置き換えます。

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

< > ?
, . 

この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, '\"', ''),
                                                                                        '.', ''),
                                                                                    '?', ''),
                                                                                '`', ''),
                                                                            '
解説 (6)

は、これで行くかもしれませんね。

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

シングルクォートを使ったのは、MySQLで文字列式を登録するのがそれ'だから、だと思う。

お役に立てれば幸いです。

解説 (3)

もし、"something"があって、"something'が必要なら、replace(col, " \"", "◇'◇) で、その逆の場合は、&#39。

解説 (3)