Mysql中的轉義字符

字符串是多個字符組成的一個字符序列,由單引號( “'”) 或雙引號 ( “"”) 字符包圍。(但在 ANSI 模式中運行時只能用單引號)。

例如:

'a string'
"another string"

在一個字符串中,如果某個序列具有特殊的含義,每個序列以反斜線符號 (“/”)開頭,稱為轉義字符。 MySQL 識別下列轉義字符:

/0
一個 ASCII 0 (NUL) 字符。
/'
一個 ASCII 39 單引號 (“'”) 字符。
/"
一個 ASCII 34 雙引號 (“"”) 字符。
/b
一個 ASCII 8 退格符。
/n
一個 ASCII 10 換行符。
/r
一個 ASCII 13 回車符。
/t
一個 ASCII 9 制表符(TAB)。
/z
ASCII(26) (Control-Z)。這個字符可以處理在 Windows 系統中 ASCII(26) 代表一個文件的結束的問題。(當使用 mysql database < filename 時 ASCII(26) 可能會引起問題產生。)
//
一個 ASCII 92 反斜線 (“/”) 字符。
/%
一個 ASCII 37 “%” 字符。它用于在正文中搜索“%”的文字實例,否則這里“%”將解釋為一個通配符。查看章節 6.3.2.1 字符串比較函數
/_
一個 ASCII 95 “_” 字符。它用于在正文中搜索“_”的文字實例,否則這里“_”將解釋為一個通配符。查看章節 6.3.2.1 字符串比較函數.

注意如果在某些正文環境內使用 “/%”“/_”,將返回字符串 “/%”“/_” 而不是 “%”“_”

字符串中包含引號的可以有下列幾種寫法:

  • 一個字符串用單引號“'”來引用的,該字符串中的單引號“'”字符可以用“''”方式轉義。
  • 一個字符串用雙引號“"”來引用的,該字符串中的“"”字符可以用“""”方式轉義。
  • 你也可以繼續使用在引號前加一個轉義字符“/”來轉義的方式。
  • 一個字符串用雙引號“"”來引用的,該字符串中的單引號“'”不需要特殊對待而且不必被重復或轉義。同理,一個字符串用單引號“'”來引用的,該字符串中的雙引號“"”不需要特殊對待而且不必被重復或轉義。

下面顯示的 SELECT 演示引號和轉義是如何工作

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 |
+--------------------+

如果你想要把二進制數據插入到一個字符類型的字段中(例如BLOB),下列字符必須由轉義序列表示:

NUL
ASCII 0,你應該用 “/0”(一個反斜線和一個ASCII “0”字符)表示它。
/
ASCII 92,反斜線。需要用 “//” 表示。
'
ASCII 39,單引號。需要用 “/'” 表示。
"
ASCII 34,雙引號。需要用 “/"” 表示。

如果你寫 C 代碼,你可以使用 C API 函數mysql_real_escape_string() 來為 INSERT 語句轉義字符。查看章節 8.1.2 C API 函數概述。在 Perl 中,你可以使用 DBI 包中的 quote 方法來將這些特殊字符轉換成適當的轉義序列。查看章節 8.5.2 DBI 接口

你應該在任何可能包含上述特殊字符的字符串中使用轉義函數!

另外,很多 MySQL API 提供了一些占位符處理能力,這允許你在查詢語句中插入特殊標記,然后在執行查詢時對它們綁定數據值。這樣,API 會自動為你從數值中轉換它們。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/news/535717.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535717.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535717.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Docker原理之UnionFS

一、UnionFS Linux 的命名空間和控制組分別解決了不同資源隔離的問題&#xff0c;前者解決了進程、網絡以及文件系統的隔離&#xff0c;后者實現了 CPU、內存等資源的隔離&#xff0c;但是在 Docker 中還有另一個非常重要的問題需要解決 - 也就是鏡像。 鏡像到底是什么&#…

教你精確編寫高質量高性能的MySQL語法

在應用系統開發初期&#xff0c;由于開發數據庫數據比較少&#xff0c;對于查詢SQL語句&#xff0c;復雜視圖的編寫&#xff0c;剛開始不會體會出SQL語句各種寫法的性能優劣&#xff0c;但是如果將應用系統提交實際應用后&#xff0c;隨著數據庫中數據的增加&#xff0c;系統的…

Docker使用-Hello World

1、docker pull hello-world 拉去docker遠程倉庫中的Hello World的鏡像 [rootCarlota2 ~]# docker pull hello-world Using default tag: latest latest: Pulling from library/hello-world 0e03bdcc26d7: Pull complete Digest: sha256:7f0a9f93b4aa3022c3a4c147a449bf11e09…

Mysql數據庫引擎快速指南

如果你是個賽車手并且按一下按鈕就能夠立即更換引擎而不需要把車開到車庫里去換&#xff0c;那會是怎么感覺呢&#xff1f; MySQL 數據庫為開發人員所做的就好像是按按鈕換引擎&#xff1b;它讓你選擇數據庫引擎&#xff0c;并給你一條簡單的途徑來切換它。 MySQL的自帶引擎肯…

Docker使用-構建MySQL

拉取官方鏡像&#xff08;我們這里選擇5.7&#xff0c;如果不寫后面的版本號則會自動拉取最新版&#xff09; docker pull mysql:5.7 # 拉取 mysql 5.7 docker pull mysql # 拉取最新版mysql鏡像MySQL文檔地址 檢查是否拉取成功 $ sudo docker images一般來說數據庫容…

Java集合:什么是Java集合?

一、集合的由來 通常&#xff0c;我們的Java程序需要根據程序運行時才知道創建了多少個對象。但若非程序運行&#xff0c;程序開發階段&#xff0c;我們根本不知道到底需要多少個數量的對象&#xff0c;甚至不知道它的準確類型。為了滿足這些常規的編程需要&#xff0c;我們要…

Mysql截取中英數混合的字符串

在 mysql中截取字符串我們用 LEFT函數 LEFT(str,len) 返回從字符串str 開始的len 最左字符。 mysql> SELECT LEFT(foobarbar, 5); -> fooba 手冊上只介紹了截取英文字符串的方法&#xff0c;中文或者中英文的怎么辦呢&#xff1f;以下是截取中英混合的字符串(中國人…

Java集合:Collection接口

Collection是一個接口&#xff0c;繼承自Iterable。我們先看一下Iterable接口的源碼 一、Iterable package java.lang;import java.util.Iterator; import java.util.Objects; import java.util.Spliterator; import java.util.Spliterators; import java.util.function.Cons…

Java集合:List集合

List集合 List集合類中元素有序、且可重復&#xff0c;集合中的每個元素都有其對應的順序索引。 List容器中的元素都對應一個整數型的序號記載其在容器中的位置&#xff0c;可以根據序號存取容器中的元素。 JDK API中List接口的實現類常用的有&#xff1a;ArrayList、LinkList和…

MySQL為什么要set names

大家都知道SET NAMES x相當于SET character_set_client x;SET character_set_results x;SET character_set_connection x; 以下從MySQL5.0官方文檔上摘錄了相關內容&#xff0c;并翻譯&#xff0c;說明了相關系統變量的用處&#xff1a; What character set is the statem…

MySql日期處理系列-常用的日期推算處理

以下都是我平時用的一些日期推算處理方法&#xff0c;方法并不一定是最有效率的.全部均通過測試!轉載請注明來自[phpchina.com] #title: 常用的日期推算處理#auther: 小強(占卜師) #date: 2007-12-25 #取得當前日期set dtCURDATE();select dt; #當前日期這個月的第一天selec…

Java集合:Set集合

一、Set接口的特點 一個不包含重復元素的collection。更確切地講&#xff0c;Set不包含滿足e1.equals(e2)的元素對 e1和e2&#xff0c;并且最多包含一個null元素。 Set集合由Set接口和Set接口的實現類組成&#xff0c;Set接口繼承了Collection接口&#xff0c;因此包含了Coll…

談談我對MYSQL亂碼的解決辦法

經常更換虛擬主機,而各個服務商的MYSQL版本不同,當導入數據后,總會出現亂碼等無法正常顯示的問題,查了好多資料,總結出自己的一點技巧: WINDOWS 下導入應該這樣使用MYSQL的命令在DOS命令下進入mysql的bin目錄下,輸入mysql -uroot -p密碼 數據庫名稱<要恢復的數據庫, 例如我們…

Java集合:Map集合

一、簡述 public interface Map<K,V>將鍵映射到值的對象。一個映射不能包含重復的鍵&#xff1b;每個鍵最多只能映射到一個值。 注意&#xff1a;Map中的集合不能包含重復的鍵&#xff0c;值可以重復。每個鍵只能對應一個值。 Map集合是鍵值對形式存儲值的&#xff0c…

用離線編輯器Zoundry寫zblog日志

Zoundry是免費的離線網志發布工具&#xff0c;由于家里的網絡很差&#xff0c;寫了一半的日志經常因為掉線而丟失&#xff0c;這樣一款軟件的確是很必要的。今天下載試用了一下&#xff0c;感覺的確不錯。使用起來也很簡單&#xff1a; 1.下載并安裝zoundry軟件&#xff1a;現…

MySQL:基本命令

一、數據庫操作 1、查詢數據庫&#xff0c;命令如下: SHOW DATABASES;2、我們可以在登陸 MySQL 服務后&#xff0c;使用 create 命令創建數據庫&#xff0c;命令格式: CREATE DATABASE 數據庫名;3、使用 drop 命令刪除數據庫&#xff0c;命令格式&#xff1a; drop databas…

CentOS 5打造全功能Web服務器

轉&#xff1a;主要做為歷史記錄&#xff0c;以后用。另外很少見這么好的編譯的文章&#xff0c;其實我不推薦用編譯安裝。但這個文章不錯.V3.0 2007年11月11日 將搭建教程劃分階段以適應不同需要。加入程序優化&#xff0c;程序安全&#xff0c;加入memcache&#xff0c;squid…

MySQL:查詢條件

查詢條件 1、使用 WHERE 子句從數據表中讀取數據的通用語法&#xff1a; SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2.....查詢語句中你可以使用一個或者多個表&#xff0c;表之間使用逗號**,** 分割&#x…

linux下的ImageMagick安裝

檢查系統有無安裝ImageMagick官方網址是&#xff1a; www.imagemagick.org 從官方不好下載&#xff0c;提供 sourceforge的下載地址&#xff1a; imagemagick.sourceforge.net shell> rpm -qa | grep ImageMagick 沒有就開始安裝ImageMagickshell> rpm -Uvh ImageMagi…

MySQL:進階應用

一、進階應用 1、可以在 SELECT, UPDATE 和 DELETE 語句中使用 Mysql 的 JOIN 來聯合多表查詢。 JOIN 按照功能大致分為如下三類&#xff1a; INNER JOIN&#xff08;內連接,或等值連接&#xff09;&#xff1a;獲取兩個表中字段匹配關系的記錄。**LEFT JOIN&#xff08;左連…