偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

我們一起聊聊奇怪的SQL問(wèn)題+1

數(shù)據(jù)庫(kù) MySQL
實(shí)際上手動(dòng)刪除的 SQL 這么奇怪就是因?yàn)楸頉](méi)有主鍵,不然正常手動(dòng)的刪除 SQL 上 where 條件肯定是 id =xxx。

你好,我是yes。

我的 VIP 用戶(hù)又拋給我一個(gè) SQL 問(wèn)題,我很激動(dòng),因?yàn)樗夭挠謥?lái)了:

圖片

我一看,這個(gè)表沒(méi)什么花頭,不就是沒(méi)設(shè)置主鍵嗎,MySQL 會(huì)默認(rèn)生成一個(gè)主鍵,這跟 delete 不掉數(shù)據(jù)好像也沒(méi)啥關(guān)系。

然后他說(shuō):

delete from a where device_id = '1239898' and task_id = '00111133445566';

這樣刪除不掉。

但是用 navicat 界面選擇某一行點(diǎn)擊刪除可以刪掉,然后他發(fā)現(xiàn)這樣操作刪除的 SQL 在尾部加上了  ESCAPE '#';

delete from a where device_id = '1239898' and task_id like '00111133445566' ESCAPE '#';

不知道為啥在界面手動(dòng)刪除用的是 like ,但是先不管,反正根據(jù)這個(gè)現(xiàn)象他暫時(shí)得出了一個(gè)結(jié)論,這個(gè)表的數(shù)據(jù)加ESCAPE '#'; 才刪的掉。

我一聽(tīng)更興奮了,這是什么奇怪的操作!

ESCAPE 是什么?

這個(gè) ESCAPE 是一個(gè)關(guān)鍵字,它的作用其實(shí)很簡(jiǎn)單:替代轉(zhuǎn)義的字符。

我們都知道跟 like 有關(guān)的 % 的作用,它能匹配任意多個(gè)字符。

比如 select * from a where name like '陳%';

這條語(yǔ)句就能把 a 表中姓陳的人都查找出來(lái)。

圖片

那現(xiàn)在有個(gè)人他叫“陳%2”,你只想找“陳%”開(kāi)頭的 name。

此時(shí)你就不能用 like '陳%',你需要用 like '陳 \ %%':

圖片

這里的 \ 就是轉(zhuǎn)義符,它的作用是把緊跟后面的這個(gè)字符轉(zhuǎn)義成正常的字符,不再具有它之前的含義(像 %之前的含義就是匹配任意多個(gè)字符)。

而 ESCAPE 的作用就是聲明另一個(gè)字符來(lái)替換 \ 。

比如 select * from a where name like '陳#%%' ESCAPE "#";

圖片

這樣一聲明,# 就達(dá)到了 \ 的效果。

回到問(wèn)題上來(lái)

現(xiàn)在我們已經(jīng)明白了 ESCAPE 的作用,那么它跟開(kāi)頭的問(wèn)題有什么關(guān)系嗎?

我不知道,但是我很興奮,我開(kāi)始瘋狂查閱資料。

google 無(wú)。

chatgpt 無(wú)。

newbing無(wú)。

MySQL官網(wǎng)無(wú)。

然后開(kāi)始懷疑了:

圖片

圖片

好像看起來(lái)沒(méi)什么特別的。

然后我又過(guò)了一遍跟他的聊天記錄。

我直呼好家伙!!

圖片

他寫(xiě)的 SQL 是:

圖片

實(shí)際的數(shù)據(jù)是 :

圖片

所以他把兩個(gè)條件寫(xiě)錯(cuò)了,task_id 是 1239898,device_id 才是那個(gè)一長(zhǎng)串!?。?/p>

我估計(jì)這位同學(xué)之所以沒(méi)看出來(lái)的原因是客戶(hù)端手動(dòng)刪除的操作能刪掉:

圖片

且產(chǎn)生了奇怪的  SQL,莫名加了  ESCAPE '#',讓我們的這位同學(xué)一下子陷入了沉思。

實(shí)際上手動(dòng)刪除的 SQL 這么奇怪就是因?yàn)楸頉](méi)有主鍵,不然正常手動(dòng)的刪除 SQL 上 where 條件肯定是 id =xxx。

至于為什么加了 ESCAPE '#' 其實(shí)我也沒(méi)懂,我查了查也也沒(méi)查到。

如果知道的大佬歡迎留言指導(dǎo)下!

最后

所以,這并不是一個(gè)奇怪的 SQL 問(wèn)題,只是一個(gè)小疏忽。

其實(shí)這種問(wèn)題在編程上很常見(jiàn),比如在 postman 調(diào)試的時(shí)候,分頁(yè)數(shù)據(jù)寫(xiě)反了,pageSize寫(xiě)了1,pageNumer 寫(xiě)了 10 ,導(dǎo)致怎么查都沒(méi)數(shù)據(jù),怎么 debug 都看蒙了。

因?yàn)槭韬霎a(chǎn)生了很多奇奇怪怪、五花八門(mén)的問(wèn)題,然后花了很多時(shí)間去找答案,還找不到。

最終沉下心來(lái)總的再過(guò)一遍才會(huì)發(fā)現(xiàn),或者只能求助于同事。

我知道有問(wèn)題,但是深陷其中當(dāng)局者迷,花了兩個(gè)小時(shí)還沒(méi)解決,同事 10s 就能看出來(lái)。

所以遇到事情不要不好意思,要主動(dòng)求助同事,不然那兩個(gè)小時(shí)是真的痛苦!

責(zé)任編輯:武曉燕 來(lái)源: yes的練級(jí)攻略
相關(guān)推薦

2023-10-26 08:38:43

SQL排名平分分區(qū)

2024-02-28 08:41:51

Maven沖突版本

2024-07-11 08:26:00

2025-01-07 09:07:36

接口屬性路徑

2023-06-30 08:18:51

敏捷開(kāi)發(fā)模式

2023-09-10 21:42:31

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信

2022-05-24 08:21:16

數(shù)據(jù)安全API

2023-08-04 08:20:56

DockerfileDocker工具

2022-10-08 00:00:05

SQL機(jī)制結(jié)構(gòu)

2023-04-26 07:30:00

promptUI非結(jié)構(gòu)化

2024-02-20 21:34:16

循環(huán)GolangGo

2021-08-27 07:06:10

IOJava抽象

2023-09-15 06:56:01

RC.NET 6Release

2023-08-02 08:35:54

文件操作數(shù)據(jù)源

2022-12-06 08:12:11

Java關(guān)鍵字

2025-04-11 00:05:49

RPC底層分布式

2022-09-08 08:50:17

SSDOracleCPU

2024-09-09 08:53:56

2024-06-14 09:32:12

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)