最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL里的反斜杠(\\)的使用

 更新時(shí)間:2023年02月03日 10:51:47   作者:GeGe&YoYo  
本文主要介紹了MySQL里的反斜杠(\\)的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、INSERT語句中有反斜杠(\)

1. 實(shí)際測試

咱們用下面這些SQL來測試一下反斜杠(\)在INSERT語句中會是啥樣?

INSERT INTO `demo0526` (`id`, `text`) VALUES (null, 'D:\陳哈哈\加班');
INSERT INTO `demo0526` (`id`, `text`) VALUES (null, 'D:\\陳哈哈\\加班');
INSERT INTO `demo0526` (`id`, `text`) VALUES (null, 'D:\\\陳哈哈\\\加班');
INSERT INTO `demo0526` (`id`, `text`) VALUES (null, 'D:\\\\陳哈哈\\\\加班');
INSERT INTO `demo0526` (`id`, `text`) VALUES (null, 'D:\\\\\陳哈哈\\\\\加班');

插入后的結(jié)果:

mysql> select * from demo0526;
+----+-----------------------+
| id | text                  |
+----+-----------------------+
|  1 | D:陳哈哈加班          |
|  2 | D:\陳哈哈\加班        |
|  3 | D:\陳哈哈\加班        |
|  4 | D:\\陳哈哈\\加班      |
|  5 | D:\\陳哈哈\\加班      |
+----+-----------------------+
5 rows in set (0.00 sec)

我們發(fā)現(xiàn)結(jié)果如下:

當(dāng)字符串中有1個(gè)反斜杠,插入后算0個(gè)。
當(dāng)字符串中有2個(gè)反斜杠,插入后算1個(gè)。
當(dāng)字符串中有3個(gè)反斜杠,插入后算1個(gè)。
當(dāng)字符串中有4個(gè)反斜杠,插入后算2個(gè)。
當(dāng)字符串中有5個(gè)反斜杠,插入后算2個(gè)。

2. 原理

在MySQL中,反斜杠在字符串中是屬于轉(zhuǎn)義字符,經(jīng)過語法解析器解析時(shí)會進(jìn)行一次轉(zhuǎn)義,所以當(dāng)我們insert反斜杠(\)字符時(shí),如 insert “\” 在數(shù)據(jù)庫中最終只會存儲"",第一個(gè)反斜杠(\)被當(dāng)做轉(zhuǎn)義字符處理。

同理,像這種 D:\\\陳哈哈\\\加班 字符串,語法解析器解析到第三個(gè)反斜杠(\)時(shí),又會把它當(dāng)做下一個(gè)轉(zhuǎn)義字符進(jìn)行處理,因此D:\\\陳哈哈\\\加班入庫后變成了D:\陳哈哈\加班。

二、SELECT查詢反斜杠(\)

1. 實(shí)際測試

我們還是沿用上面的表數(shù)據(jù),直接用like模糊匹配來測試一下。

mysql> select * from demo0526;
+----+-----------------------+
| id | text                  |
+----+-----------------------+
|  1 | D:陳哈哈加班          |
|  2 | D:\陳哈哈\加班        |
|  3 | D:\陳哈哈\加班        |
|  4 | D:\\陳哈哈\\加班      |
|  5 | D:\\陳哈哈\\加班      |
+----+-----------------------+
5 rows in set (0.00 sec)

我們先用單個(gè)反斜杠和兩個(gè)反斜杠看看能查到啥玩意兒

mysql> SELECT * from demo0526 where text like '%\%';
Empty set (0.00 sec)

mysql> SELECT * from demo0526 where text like '%\\%';
Empty set (0.00 sec)

?。。∥覀冇胠ike ‘%%’、like '%\%'查詢后發(fā)現(xiàn)都查不到數(shù)據(jù),納尼?上面的我白學(xué)了嗎?

別著急,我會告訴你SELECT語句中四個(gè)反斜杠(\\)代表一個(gè)么?呀,我趕快換成like '%\\%'試一試。

mysql> SELECT * from demo0526 where text like '%\\\\%';
+----+-----------------------+
| id | text                  |
+----+-----------------------+
|  2 | D:\陳哈哈\加班        |
|  3 | D:\陳哈哈\加班        |
|  4 | D:\\陳哈哈\\加班      |
|  5 | D:\\陳哈哈\\加班      |
+----+-----------------------+
4 rows in set (0.00 sec)

喔?那我如果查詢表中帶有兩個(gè)反斜杠(\)的數(shù)據(jù),豈不是要like八個(gè)。。。。別攔我,我看看tm是誰設(shè)計(jì)的這規(guī)則

mysql> SELECT * from demo0526 where text like '%\\\\\\\\%';
+----+-----------------------+
| id | text                  |
+----+-----------------------+
|  4 | D:\\陳哈哈\\加班      |
|  5 | D:\\陳哈哈\\加班      |
+----+-----------------------+
2 rows in set (0.00 sec)

2. 原理

在mysql的like語法中,like后邊的字符串除了會在語法解析時(shí)轉(zhuǎn)義一次外,還會在正則匹配時(shí)進(jìn)行第二次的轉(zhuǎn)義。因此如果期望最終匹配到"",就要反轉(zhuǎn)義兩次,也就是由"\\\\"到"\\"再到"\"。

如果是普通的精確查詢(=),則無需第二次的正則轉(zhuǎn)義,和INSERT語句一樣。

mysql> SELECT * from demo0526 where text = '\\\\';
+----+------+
| id | text |
+----+------+
|  7 | \\   |
+----+------+
1 row in set (0.00 sec)

到此這篇關(guān)于MySQL里的反斜杠(\\)的使用的文章就介紹到這了,更多相關(guān)MySQL 反斜杠內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

新乡县| 成都市| 巫山县| 四子王旗| 图们市| 库尔勒市| 雅江县| 辉南县| 古丈县| 华亭县| 临沭县| 南川市| 盘山县| 太和县| 华容县| 中西区| 罗定市| 什邡市| 沙湾县| 正定县| 霍林郭勒市| 康保县| 育儿| 芷江| 云林县| 额济纳旗| 明光市| 汝州市| 霞浦县| 湘阴县| 新昌县| 泉州市| 吉安市| 牙克石市| 永州市| 瑞金市| 香河县| 武威市| 昂仁县| 连州市| 鄂尔多斯市|