2
當我運行查詢#1:如何獲得選擇輸出轉義「 0」字符
SELECT * FROM $TABLE INTO OUTFILE $FILE CHARACTER SET utf8 FIELDS ESCAPED BY '\\\\' TERMINATED BY '|';
有是輸出,因爲這一個字段值:
blah\0
我想在不使用INTO OUTFILE
的情況下獲得相同的輸出。
查詢#2用Perl代碼:
$query = $db->prepare("SELECT * FROM $TABLE");
$query->execute;
open(FILE_OUT, ">$FILE");
然而,相同的列的上方被輸出作爲
blah
所以\0
字符(ASCII NUL)被不同地輸出。如何修改查詢#2以輸出blah\0
?
修改可以在MySQL查詢或Perl中進行。該列的整理是utf8_general_ci。我試過使用CONVERT($column using utf8)
但仍顯示blah
,我不知道如何在輸出時將其應用於每個表格的每一列。
更新:
此Perl代碼工作在轉義NUL字符。
$row =~ s/\0/\\0/g;
但也有許多其他MySQL的特殊字符,有沒有辦法一下子逃脫他們所有,而不是處理它們一個接一個?
你會在[本帖]中找到很多相關信息(http://stackoverflow.c OM /問題/ 881194 /怎麼辦-I-轉義特殊字符,在MySQL的)。要打印NUL,你可以使用[pack](http://perldoc.perl.org/functions/pack.html)。參見教程[perlpacktut](http://perldoc.perl.org/perlpacktut.html)。最後,你總是可以用整個字符串的正則表達式來反斜槓,但這可能不會削減它。 – zdim