2012-02-24 17 views
5

MySQL sorgusundaki çıkış karakterlerini devre dışı bırakmanın bir yolu var mı? Örneğin, aşağıdaki tablo için:MySQL sorgusundaki çıkış karakterlerini devre dışı bırakma

mysql> select * from test1; 
+------------------------+-------+ 
| name     | value | 
+------------------------+-------+ 
| C:\\media\data\temp\ |  1 | 
| C:\\media\data\temp |  2 | 
| /unix/media/data/temp |  3 | 
| /unix/media/data/temp/ |  4 | 
+------------------------+-------+ 

Ben geçerli bir sorgu olmak için aşağıdaki istiyorum: Ben yerine

mysql> select * from test1 where name='C:\\\\media\\data\\temp\\'; 

kullanabileceğinizi biliyor

mysql> select * from test1 where name='C:\\media\data\temp\'; 

Ama inşa ediyorum my_snprintf() kullanarak bu sorguyu kullanmak yerine

C:\\\\\\\\media\\\\data\\\\temp\\\\ 

... vb. Tek bir MySQL sorgusu için kaçış karakterlerini devre dışı bırakmanın bir yolu var mı?

+0

hangi dili içinde bunu yapıyorsun? İnternette my_snprintf için herhangi bir bilgi bulamadım. Senin için kaçan bir işlev yaratmanın bir yolu yok mu? –

+0

C. kullanıyorum my_snprintf() - http://dev.mysql.com/doc/refman/5.5/en/plugin-services.html. Çoğu sprintf yapar. –

cevap

8

Sen devre dışı bırakabilir ters eğik çizgi SQL modunda NO_BACKSLASH_ESCAPES ayarlayarak kaçar:

-- save mode & disable backslashes 
SET @old_sql_mo[email protected]@sql_mode; 
SET @@sql_mode=CONCAT_WS(',', @@sql_mode, 'NO_BACKSLASH_ESCAPES'); 

-- run the query 
SELECT 'C:\\media\data\temp\'; 

-- enable backslashes 
SET @@[email protected]_sql_mode; 
1

MySQL komut satırında sekmeli çıktı için, sütunların etrafındaki “kutu”, bir sütun değerinin diğerinden ayırt edilmesini sağlar. Sekmeli olmayan çıktı için (toplu iş modunda üretilir veya --batch veya --silent seçeneği belirtildiğinde), çıktıda özel karakterler kaçar ve böylece kolayca tanımlanabilirler. Newline, tab, NUL ve ters eğik çizgi \ n, \ t, \ 0 ve \ olarak yazılır. --raw seçeneği, bu karakterin kaçmasını engeller.

+0

'--raw' çalıştı! Teşekkürler! –

İlgili konular