データベーステーブルからフォルダーとワイルドカードのリストを作成するためのクエリを作成しており、多数のフォルダをコピーするためにバッチファイルで使用されます。私が関心を持っているものを返すクエリを書いたのですが、mysqlクライアント自体よりもファイルへのエクスポートやコンソールへの表示時にクエリの結果が異なることに気付きました。具体的には、 "\"文字を2倍にしてエスケープしていますが、ファイルに書き込むときにエスケープ文字が表示されます。私は同じ書き込みただしmysqlクエリの結果がエクスポートファイルと異なるコンソール
mysql> SELECT CONCAT('\\',SUBSTR("Foo",1,1),'\\',"Foo",'\\*.*') AS 'List';
+------------+
| List |
+------------+
| \F\Foo\*.* |
+------------+
1 row in set (0.00 sec)
:クエリは、私が期待する結果を返しますmysqlコマンドラインから
SELECT CONCAT('\\',SUBSTR("Foo",1,1),'\\',"Foo",'\\*.*') AS 'List';
次のように
私が使用したクエリの例です。 test.sqlという名前のファイルにクエリを実行し、クエリをパイプして出力を表示またはパイプします。出力にエスケープ文字が表示されています。
C:\testing123>echo SELECT CONCAT('\\',SUBSTR("Foo",1,1),'\\', "Foo",'\\*.*') AS 'List'; > test.sql
C:\testing123>mysql < test.sql
List
\\F\\Foo\\*.*
INTO OUTFILEを使用すると同じ結果が得られます
私はtest.sqlクエリファイルからエスケープ文字を削除しようとしましたが、クエリによってエラーが発生するだけです(期待どおり)。
は私がいた、あなたのステファンありがとう私の目標を達成するためにSET sql_mode = 'NO_BACKSLASH_ESCAPES'とINTO OUTFILEを使用することができます。 –