在字符串中,,某些序列具有特殊含義。這些序列均用反斜線(‘\’)開始,,即所謂的轉(zhuǎn)義字符,。MySQL識(shí)別下面的轉(zhuǎn)義序列:
這些序列對(duì)大小寫敏感。例如,,‘\b’解釋為退格,,但‘\B’解釋為‘B’。 ‘\%’和‘\_’序列用于搜索可能會(huì)解釋為通配符的模式匹配環(huán)境中的‘%’和‘_’文字實(shí)例,。參見12.3.1節(jié),,“字符串比較函數(shù)”。請(qǐng)注意如果你在其它環(huán)境中使用‘\%’或‘\_’,,它們返回字符串‘\%’和‘\_’,,而不是‘%’和‘_’。 在其它轉(zhuǎn)義序列中,,反斜線被忽略,。也就是說,,轉(zhuǎn)義字符解釋為仿佛沒有轉(zhuǎn)義。 有幾種方式可以在字符串中包括引號(hào): · 在字符串內(nèi)用‘'’引用的‘'’可以寫成‘''’,。 · 在字符串內(nèi)用‘'’引用的‘'’可以寫成‘''’,。 · 可以在引號(hào)前加轉(zhuǎn)義字符(‘\’)。 · 在字符串內(nèi)用‘'’引用的‘'’不需要特殊處理,,不需要用雙字符或轉(zhuǎn)義,。同樣,在字符串內(nèi)用‘'’引用的‘'’也不需要特殊處理,。 下面的SELECT語句顯示了引用和轉(zhuǎn)義如何工作: mysql> SELECT 'hello', ''hello'', '''hello''', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT 'hello', ''hello'', '''hello''', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT 'This\nIs\nFour\nLines'; +--------------------+ | This Is Four Lines | +--------------------+ mysql> SELECT 'disappearing\ backslash'; +------------------------+ | disappearing backslash | +------------------------+ 如果你想要在字符串列內(nèi)插入二進(jìn)制數(shù)據(jù)(例如BLOB),,必須通過轉(zhuǎn)義序列表示下面的字符:
當(dāng)編寫應(yīng)用程序時(shí),,在包含這些特殊字符的字符串用于發(fā)送到MySQL服務(wù)器的SQL語句中的數(shù)據(jù)值之前,必須對(duì)它們正確進(jìn)行轉(zhuǎn)義,??梢杂脙煞N方法來完成: · 用轉(zhuǎn)義特殊字符的函數(shù)處理字符串。例如,,在C程序中,,可以使用mysql_real_escape_string() C API函數(shù)來轉(zhuǎn)義字符。參見25.2.3.52節(jié),,“mysql_real_escape_string()”,。Perl DBI接口提供一個(gè)quote方法來將特殊字符轉(zhuǎn)換為正確的轉(zhuǎn)義序列。參見25.4節(jié),,“MySQL Perl API”,。 · 顯式轉(zhuǎn)義特殊字符,許多MySQL API提供了占位符功能,,允許你在查詢字符串中插入特殊標(biāo)記,,然后當(dāng)你發(fā)出查詢時(shí)將數(shù)據(jù)值同它們綁定起來。在這種情況下,,API關(guān)注轉(zhuǎn)義值中的特殊字符,。 |
|