首頁 > 軟體

SQL中concat和substr組合運用解析

2022-08-06 14:01:23

concat和substr組合運用

背景

最近客戶要我給一個指令碼說查資料,說是要 擷取sql表中某一個欄位的前5個數值 進行查詢。

剛開始我以為很簡單就接了下來開始想,想了之後發現並沒有這麼簡單(自己太菜了),就去問朋友(巨量資料開發)。

給了我 這兩個函數(concat和substr)讓我自己去玩 ,但是客戶一直再催沒辦法只能找我們自己的開發寫指令碼。

Ten minutes later…

真的就10分鐘,開發發來了指令碼,果然就是用的這兩個函數,還得是大佬。

指令碼有放在最後一章進行分析

concat介紹

concat()可以理解為就是拼接函數,用於將多個字串連線起來,形成一個單一的字串

concat(id, name, work_date)
 這個函數會把三個欄位的數值拼接到一個欄位

更詳細的頁面學習:

連結:link

substr介紹

substr()此函數就相當於一個擷取操作

substr(string ,pos,len)
string:指定字串
pos:規定字串從何處開始
len:要擷取字串的長度

更詳情的學習請參考sql中的substr()函數用法

前言:

五一閒來無事多更新幾篇關於sql語句的文章吧,sql中要是想擷取某個欄位值作為匹配條件怎麼辦呢,這裡可以使用substr()函數了。下面請看例子吧。

substr()函數

substr()函數用於擷取對應欄位指定長度。

SUBSTR(string ,pos,len)
string:指定字串
pos:規定字串從何處開始,(這裡的第一個位置是1而不是0)為正數時則從欄位開始出開始,為負數則從結尾出開始。
len:要擷取字串的長度。(是從1開始計數而不是0)

範例:

現在我們舉個例子,現在想通過時間欄位得到每個小時15min/30min/45min/00min的資料,時間欄位data_date(YYYY-MM-DD HH:mm)

select * from meter_table
where substr(data_date,15,2) in ('00','15','30','45')

最後SQL語句分析

最終閹割版的指令碼展示

replace into student (select name,concat(substr(A.stuid,1,5),'0'),A.sex  from student A,score B WHERE substr(A.stuid,6,1)='1' and concat(substr(A.stuid,1,5),'0')=B.stuid);

replace 替換語句

concat(substr(A.stuid,1,5),‘0’)

擷取(substr函數)表A(student表)中stuid欄位的前1-5個數值,再與‘0’進行拼接成行的欄位。

本來學號為665511,現在就會變成了665510

Student表中由於某種原因,stuid欄位裡面的數值最後一位變成了1,Score表中有以‘0’結尾的正確學號,這指令碼的目的就是把Student表中的錯誤資料替換。

到此這篇關於SQL中concat和substr組合運用的文章就介紹到這了,更多相關SQL中concat和substr內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com