SQL WHERE IN參數(shù)化編譯寫法簡(jiǎn)單示例
文章主要給大家介紹了關(guān)于SQL WHERE IN參數(shù)化編譯寫法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧...
前言
最近在一次使用sql中的where in語(yǔ)句時(shí),造成了一些非預(yù)期的查詢結(jié)果。尤其是在代碼中去編寫并執(zhí)行sql語(yǔ)句時(shí),會(huì)出現(xiàn)一些意外情況。再查閱了一些資料以及手動(dòng)測(cè)試后,發(fā)現(xiàn)是自己sql語(yǔ)句寫法存在問題,在此記錄。
例子
業(yè)務(wù)需求,需要通過SQL語(yǔ)句從asset資產(chǎn)表中查詢域名字段在(“thief.one”,”nmask.cn”,”sec.thief.one”)范圍內(nèi)的數(shù)據(jù)庫(kù)記錄,SQL語(yǔ)句該怎么寫呢?
拼接法(錯(cuò)誤)
values = "'thief.one','nmask.cn','sec.thief.one'"
sql = "select * from asset where domain in ("+values+")"
print sql
說明:通過將搜索條件以字符串拼接的方式構(gòu)造sql語(yǔ)句,語(yǔ)法上可通過,但存在著安全隱患(參照sql注入漏洞)
參數(shù)化1(錯(cuò)誤)
values = (("thief.one","nmask.cn","sec.thief.one"),)
sql = "select * from asset where domain in %s"
print sql
print values
說明:通過參數(shù)化方式,將where in 后面的查詢內(nèi)容傳入。表面上看沒問題,但在編譯過程中,會(huì)將(“thief.one”,”nmask.cn”,”sec.thief.one”)整體看成一個(gè)字符串,而作為查詢條件,與需求不符合。
參數(shù)化2(正確)
values = ("thief.one","nmask.cn","sec.thief.one")
sql = "select * from asset where domain in ({})".format(",".join(['%s' for i in values]))
print sql
print values
說明:通過計(jì)算values里面字符串個(gè)數(shù),動(dòng)態(tài)構(gòu)造編譯的參數(shù)。
總結(jié)
以上就是SQL WHERE IN參數(shù)化編譯寫法簡(jiǎn)單示例文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值。
- html5 canvas 實(shí)現(xiàn)光線沿不規(guī)則路徑運(yùn)動(dòng)實(shí)例代碼
- 中文轉(zhuǎn)換成html中的utf-8的方法實(shí)例代碼
- html實(shí)現(xiàn)簡(jiǎn)單ListViews效果的實(shí)例代碼
- CSS3 translate導(dǎo)致字體模糊的實(shí)例代碼
- 關(guān)于CSS中@support實(shí)現(xiàn)漸進(jìn)式網(wǎng)頁(yè)設(shè)計(jì)實(shí)例代碼
- HTML6實(shí)現(xiàn)折疊菜單與手風(fēng)琴菜單的實(shí)例代碼
- html 仿百度百科導(dǎo)航下拉菜單功能實(shí)例代碼介紹
- WINDOWS下安裝MYSQL數(shù)據(jù)庫(kù)教程詳解
- django2.2版本連接mysql數(shù)據(jù)庫(kù)的方法
- mysql數(shù)據(jù)庫(kù)實(shí)現(xiàn)多表關(guān)聯(lián)統(tǒng)計(jì)、子查詢統(tǒng)計(jì)示例
html5 canvas 實(shí)現(xiàn)光線沿不規(guī)則路徑運(yùn)動(dòng)實(shí)例代碼
文章主要介紹了html5 canvas 實(shí)現(xiàn)光線沿不規(guī)則路徑運(yùn)動(dòng),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下。g讓動(dòng)畫沿著不規(guī)則路徑運(yùn)動(dòng)查閱svg文檔后發(fā)現(xiàn),svg動(dòng)畫...
中文轉(zhuǎn)換成html中的utf-8的方法實(shí)例代碼
文章主要介紹了中文轉(zhuǎn)換成html中的utf-8的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下在HTML中,中文的“好好學(xué)習(xí)”可...
html實(shí)現(xiàn)簡(jiǎn)單ListViews效果的實(shí)例代碼
文章主要介紹了html實(shí)現(xiàn)簡(jiǎn)單ListViews效果的實(shí)例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下html實(shí)現(xiàn)簡(jiǎn)單Li...
CSS3 translate導(dǎo)致字體模糊的實(shí)例代碼
文章主要介紹了CSS3 translate導(dǎo)致字體模糊的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧今日客戶反饋,發(fā)現(xiàn) 使用了 translate會(huì)導(dǎo)致字體模糊。.media-body-b...
關(guān)于CSS中@support實(shí)現(xiàn)漸進(jìn)式網(wǎng)頁(yè)設(shè)計(jì)實(shí)例代碼
文章主要給大家介紹了關(guān)于CSS中@support實(shí)現(xiàn)漸進(jìn)式網(wǎng)頁(yè)設(shè)計(jì)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用CSS具有一定的參考學(xué)習(xí)價(jià)值前言特性查詢賦予了我們...
HTML6實(shí)現(xiàn)折疊菜單與手風(fēng)琴菜單的實(shí)例代碼
文章主要介紹了HTML6實(shí)現(xiàn)折疊菜單與手風(fēng)琴菜單的實(shí)例代碼,需要的朋友可以參考下。頁(yè)面主體部分:<body><ul id="menu"> <li> <a href="#">一級(jí)菜單1</a> <ul> <li>二級(jí)...
html 仿百度百科導(dǎo)航下拉菜單功能實(shí)例代碼介紹
文章主要介紹了html 仿百度百科導(dǎo)航下拉菜單功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下。html 仿百度百科導(dǎo)航下拉菜單功能,具...
WINDOWS下安裝MYSQL數(shù)據(jù)庫(kù)教程詳解
文章主要介紹了WINDOWS下安裝MYSQL教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下。1、下載安裝包-根據(jù)自己電腦系統(tǒng)選擇合適的版本:htt...
django2.2版本連接mysql數(shù)據(jù)庫(kù)的方法
文章主要介紹了django2.2版本如何連接mysql數(shù)據(jù)庫(kù),本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下。一、運(yùn)行項(xiàng)目報(bào)錯(cuò)信息如下:File "/home/p...
mysql數(shù)據(jù)庫(kù)實(shí)現(xiàn)多表關(guān)聯(lián)統(tǒng)計(jì)、子查詢統(tǒng)計(jì)示例
文章主要介紹了mysql實(shí)現(xiàn)多表關(guān)聯(lián)統(tǒng)計(jì)(子查詢統(tǒng)計(jì)),結(jié)合具體案例形式分析了mysql多表關(guān)聯(lián)統(tǒng)計(jì)的原理、實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下。本文實(shí)例講述了my...