站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        mysql中的find_in_set字符串查找函數(shù)解析

        本篇文章給大家?guī)?lái)了關(guān)于mysql的相關(guān)知識(shí),主要介紹了mysql中的find_in_set字符串查找函數(shù),下面根據(jù)示例一起來(lái)看一下,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。

        mysql中的find_in_set字符串查找函數(shù)解析

        推薦學(xué)習(xí):mysql視頻教程

        需求

        系統(tǒng)中,不論是訂單還是退貨單,有的平臺(tái)使用需要賣(mài)家審核,有的則不需要,所以在系統(tǒng)中可以設(shè)置訂單或退貨單的流程節(jié)點(diǎn)。

        而對(duì)于每個(gè)流程節(jié)點(diǎn),客戶需求是每個(gè)節(jié)點(diǎn)都要根據(jù)系統(tǒng)下的員工的角色去做分發(fā),從而訂單指定到個(gè)人,而不是整個(gè)公司的員工都可以處理。

        方案

        對(duì)于上述場(chǎng)景,我實(shí)現(xiàn)的方案是在訂單表和退貨單表都增加了對(duì)應(yīng)節(jié)點(diǎn)待處理人字段,多個(gè)人可處理的話,則用,分隔,保存對(duì)應(yīng)員工的id集合。

        所以,在查詢(xún)訂單的方法上我們也需要進(jìn)行對(duì)應(yīng)的修改,每個(gè)人只能看到自己可處理的訂單。

        表內(nèi)容樣例如下:

        mysql中的find_in_set字符串查找函數(shù)解析

        員工登錄系統(tǒng),我們可以得到其對(duì)應(yīng)的id,而我們需要將其id去對(duì)應(yīng)的字段查找,是否在業(yè)務(wù)審核,財(cái)務(wù)審核或發(fā)貨人的集合中。這時(shí)候,SQL該怎么改?

        函數(shù)

        在改SQL之前,我想的是,之前總結(jié)過(guò)MYSQL的很多函數(shù),而對(duì)于上面的實(shí)現(xiàn),MYSQL中肯定會(huì)有對(duì)應(yīng)的函數(shù)幫助我們實(shí)現(xiàn)。果真,被我查到了。

        1. 介紹

        MySQL提供了一個(gè)名為FIND_IN_SET()的內(nèi)置字符串函數(shù),允許您在逗號(hào)分隔的字符串列表中查找指定字符串的位置。

        2. 語(yǔ)法:FIND_IN_SET(needle,haystack)

        FIND_IN_SET()函數(shù)接受兩個(gè)參數(shù):

        • needle是要查找的字符串。
        • haystack是要搜索的逗號(hào)分隔的字符串列表。

        FIND_IN_SET()函數(shù)根據(jù)參數(shù)的值返回一個(gè)整數(shù)或一個(gè)NULL值:

        • 如果needle或haystack為NULL,則函數(shù)返回NULL值。
        • 如果needle不在haystack中,或者h(yuǎn)aystack是空字符串,則返回零。
        • 如果needle在haystack中,則返回一個(gè)正整數(shù)。

        3. 實(shí)戰(zhàn)

        下面是項(xiàng)目中查編號(hào)為8910的員工可處理的待業(yè)務(wù)審核的訂單SQL:

        SELECT 	t.id_,t.order_sn,t.create_time, t.business_employee_ids,cus.customer_title FROM 	wms_orders t LEFT JOIN wms_customer cus ON cus.id = t.buyer_id WHERE 	t.order_status != 100 AND t.comp_id = 8815 AND FIND_IN_SET( 	'8910', 	t.business_employee_ids ) AND t.order_status = 14 AND ( 	t.parent_order_sn IS NULL 	OR t.parent_order_sn = '' ) ORDER BY 	t.id_ DESC

        結(jié)果如下:

        mysql中的find_in_set字符串查找函數(shù)解析

        上面結(jié)果截圖中,框出的三條訂單,id為6594,6523,6373是只有員工編號(hào)為8910能處理的,我們將上面的SQL員工編號(hào)改為8912,則此三條訂單應(yīng)該是不在結(jié)果范圍內(nèi)的, 從而驗(yàn)證使用此函數(shù)查詢(xún)是否可行。

        查詢(xún)結(jié)果如下:

        mysql中的find_in_set字符串查找函數(shù)解析

        結(jié)果證明查詢(xún)是沒(méi)有問(wèn)題的。

        插曲

        前兩天,有個(gè)同事在群里發(fā)了個(gè)截圖,問(wèn)了個(gè)問(wèn)題,如下:

        mysql中的find_in_set字符串查找函數(shù)解析

        簡(jiǎn)單描述下:

        圖片地址那一列存的是我們的舊數(shù)據(jù)中心的地址,而現(xiàn)在新數(shù)據(jù)中心上線了,所以需要統(tǒng)一替換成新的地址獲取圖片。

        看完后,我就想到了之前用到過(guò)MYSQL中的REPLACE()函數(shù),可以做到將字符串替換。所以,update的語(yǔ)句如下:

        UPDATE wms_platform_wear_brand SET brand_img = REPLACE ( 	brand_img, 	"http://***/udata/interface/timer/pic/getAttachPic.do?attachId=", 	"wms/orderGoods.do?method=getAttachPic&attachId=" )

        推薦學(xué)習(xí):mysql視頻教程

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 日本精品视频在线观看| 日韩精品无码一区二区三区免费 | 亚洲国产精品毛片av不卡在线| 久久最新精品国产| 国产精品亚洲а∨无码播放| 亚洲精品视频在线看| 国产一在线精品一区在线观看| 久久国产精品-久久精品| 久久精品99久久香蕉国产色戒| 一色屋精品视频在线观看| 国产午夜精品一本在线观看| 久久精品国产半推半就| 国产精品白浆在线观看免费| 中文字幕精品久久久久人妻| 久久精品国产精品亚洲人人| 成人国产一区二区三区精品 | 久久久久久夜精品精品免费啦| 亚洲国产小视频精品久久久三级| 国产国产成人久久精品| 中文字幕精品视频| 久久精品草草草| 国产精品怡红院永久免费| 国产精品99久久99久久久| 久久精品中文騷妇女内射| 亚洲乱码精品久久久久..| 亚洲av永久无码精品秋霞电影影院| 亚洲精品国产综合久久一线| 日本五区在线不卡精品| 欧美人与性动交α欧美精品成人色XXXX视频| 国产精品免费久久久久久久久| 99久久伊人精品综合观看| 2024最新国产精品一区| 刺激无码在线观看精品视频| 99精品国产成人一区二区| 国产成人无码精品久久久久免费| 午夜精品美女自拍福到在线| 热久久国产精品| 白浆都出来了视频国产精品| 国产精品自在线拍国产电影| 欧美黑人巨大videos精品| 亚洲国产精品碰碰|