
文章插圖
今天是SQL系列的第三講,我們會講解條件查詢,文本處理,百分比,行數(shù)限制,格式化以及子查詢 。
條件查詢
IF條件查詢
#if的語法IF(expr1,expr2,expr3)#示例SELECT IF(sva=1,"男","女") AS s FROM table_name WHERE sva != '';?CASE WHEN條件查詢
case when 可以實現(xiàn)if函數(shù)的功能,同時也可以聯(lián)合各類聚合函數(shù)使用 。
# case when也可以實和if一樣的功能?SELECT CASE WHEN sva=1 THEN '男'ELSE '女' END AS s FROM table_nameWHERE sva != '';#case when可以聯(lián)合聚合函數(shù)等使用?SELECT count(DISTINCT CASEWHEN sva=1 THEN 'id'ELSE 'null'END) AS sFROM TABLE_NAMEWHERE sva != '';文本處理
SUBSTR()字符串截取
substr語法詳解:
substr(strings|express,m,[n])
strings|express :被截取的字符串或字符串表達(dá)式
m 從第m個字符開始截取
n 截取后字符串長度為n
示例:selectsubstr('abcdefg',3,4)fromdual;#結(jié)果是cdefselectsubstr('abcdefg',-3,4)fromdual;#結(jié)果efgselectsubstr('abcde',2),substr('abcde',-2),substr('abcde',2,3),substr('abcdewww',-7,3)fromdual;# 結(jié)果是bcde、de、bcd、bcd字符串拼接
1.使用特殊操作符拼接
#ACESS和SQL Serve使用+SELECT vend_name + ' (' + vend_country + ')'FROM VendorsORDER BY vend_name;#DB2,Oracle, PostgreSQL,SQLite ,Open Office Base使用||SELECT vend_name || ' (' || vend_country || ')' FROM VendorsORDER BY vend_name;2.CONCAT()函數(shù)拼接
SELECTConcat(vend_name,'(',vend_country,')')FROMVendorsORDERBYvend_name;SPLIT()字符串分割
語法結(jié)構(gòu)
split(str, regex) – Splits
str:需要分割的字符
regex:以什么符號進(jìn)行分割
1.基本用法
split('a,b,c,d',',')#得到的結(jié)果:["a","b","c","d"]2.截取字符串中的某個值
當(dāng)然,我們也可以指定取結(jié)果數(shù)組中的某一項
split('a,b,c,d',',')[0]#得到的結(jié)果:a3.特殊字符的處理
特殊分割符號
regex 為字符串匹配的參數(shù),所以遇到特殊字符的時候需要做特殊的處理
#例3:"."點(diǎn)split('192.168.0.1','.')#得到的結(jié)果:[]#正確的寫法:split('192.168.0.1','\.')#得到的結(jié)果:["192","168","0","1"]LENGTH()返回字符串長度
SELECT length(vend_name) vend_lenFROM VendorsORDER BY vend_name;LOWER()/UPPER()將字符串轉(zhuǎn)換為小寫或大寫
SELECT vend_name, LOWER(vend_name)ASvend_name_lowcase,UPPER(vend_name) AS vend_name_upercase FROMVendorsORDER BY vend_name;REPLACE()字符串替換
#將adress字段中的區(qū)替換為”嘔“select*,replace(address,'區(qū)','嘔')ASrepfrom test_tbLEFT()/RIGHT()返回字符串左邊或右邊的字符
select left(CONTRACT_NAME,2)fromgb_t_contract where 1=1;#從字符表達(dá)式最左邊一個字符開始返回指定數(shù)目的字符.#若 b 的值大于 a 的長度,則返回字符表達(dá)式的全部字符a.如果 b 為負(fù)值或 0,則返回空字符串.select left('2323232',9) ;# 返回值為空LTRIM()/RTRIM()/TRIM()去掉字符串左邊/右邊或全部空格
selectltrim('sample')fromtable;#返回結(jié)果:'sample 'selectrtrim('sample')fromtable;#返回結(jié)果:' sample'selecttrim('sample')fromtable;# 返回結(jié)果:'sample'SOUNDEX() 返回字符串SOUNDEX值
#近似匹配SELECT cust_name, cust_contact FROM Customers WHERE SOUNDEX(cust_contact) = SOUNDEX('Michael Green');CAST數(shù)據(jù)類型轉(zhuǎn)換
# 將str類型的dt字段轉(zhuǎn)換為int類型的selectcast(dtasint)dtfrom table取百分比
percentile()
語法格式:
percentile_approx(DOUBLE col, p ,[B])) 近似中位數(shù)函數(shù)
percentile(DOUBLE col, p ) 中位函數(shù)
前者多了一個參數(shù)B,后者無參數(shù),其余語法一致 。
求近似的第pth個百分位數(shù),p必須介于0和1之間,返回類型為double,但是col字段支持浮點(diǎn)類型 。參數(shù)B控制內(nèi)存消耗的近似精度,B越大,結(jié)果的準(zhǔn)確度越高 。默認(rèn)為10,000 。當(dāng)col字段中的distinct值的個數(shù)小于B時,結(jié)果為準(zhǔn)確的百分位數(shù) 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- linux安裝mysql詳細(xì)步驟 linux mysql 安裝教程
- 早上吸引朋友圈的句子 早上令人心情舒服的語句
- sql數(shù)據(jù)庫使用教程 數(shù)據(jù)庫datetime格式
- 勵志的句子經(jīng)典語句 發(fā)朋友圈充滿正能量的金句
- 正能量的句子經(jīng)典語句,發(fā)朋友圈激勵自己努力的話
- sql數(shù)據(jù)庫三種備份和恢復(fù) sqlserver還原數(shù)據(jù)庫修復(fù)
- 技術(shù)教你win7如何格式化c盤 win7怎么格式化c盤
- mysql數(shù)據(jù)庫備份方法 mysql備份數(shù)據(jù)庫命令
- 簡短精辟的勵志哲理句子 勵志的句子經(jīng)典語句
- 超勵志的句子,句句經(jīng)典走心,很適合發(fā)朋友圈 勵志的句子經(jīng)典語句
