今天SQL系列产品的第三讲。大家将探讨标准查看,文本检索,百分数,行限定,文件格式和子查询。
标准查看
高频查看。
#if的英语的语法IF(expr1,expr2,expr3)#实例SELECT IF(sva=1,"男","女") AS s FROM table_name WHERE sva != '';
标准查看时的状况。
Case时能够完成if函数的作用,还可以与各种各样聚合函数融合应用。
# case when还可以实和if一样的作用SELECT CASE WHEN sva=1 THEN '男' ELSE '女' END AS s FROM table_nameWHERE sva != '';#case when能够协同聚合函数等应用SELECT count(DISTINCT CASE WHEN sva=1 THEN 'id' ELSE 'null' END) AS sFROM TABLE_NAMEWHERE sva != '';
文本检索
SUBSTR()字符串数组阻拦。
子字符串数组英语的语法表述:
substr(字符串数组|express,m,[n])
Strings|express:捕获的字符串数组或字符串数组关系式。
从m的第m字符提取。
提取的数组长度为n。
实例:selectsubstr('abcdefg',3,4)fromdual;#結果是cdefselectsubstr('abcdefg',-3,4)fromdual;#結果efgselectsubstr('abcde',2),substr('abcde',-2),substr('abcde',2,3),substr('abcdewww',-7,3)fromdual; # 結果是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()涵数拼凑。
SELECTConcat(vend_name,'(',vend_country,')')FROMVendorsORDERBYvend_name;
SPLIT()字符串数组分拆。
句法结构
分拆(字符串数组,正则表达式)–分拆
字符串数组:要分拆的标识符。
Regex:用什么符号来区划?
1.基本上使用方法。
split('a,b,c,d',',')#获得的結果:["a","b","c","d"]
2.截取字符串中的一个值。
自然,大家也能在結果二维数组中特定一个新项目。
split('a,b,c,d',',')[0]#获得的結果:a
3.特殊符号的解决。
独特切分标记
Regex是字符串匹配的主要参数,碰到特殊符号必须特别解决。
#例3:"."点split('192.168.0.1','.')#获得的結果:[]#恰当的书写:split('192.168.0.1','\.')#获得的結果:["192","168","0","1"]
LENGTH()回到数组长度。
SELECT length(vend_name) vend_lenFROM VendorsORDER BY vend_name;
LOWER()/UPPER()将字符串数组变换为小写字母或英文大写。
SELECT vend_name, LOWER(vend_name)ASvend_name_lowcase,UPPER(vend_name) AS vend_name_upercase FROMVendorsORDER BY vend_name;
REPLACE()字符串替换。
#将adress字段名中的区更换为”呕“select*,replace(address,'区','呕')ASrepfrom test_tb
LEFT()/RIGHT()回到字符串数组左边或右边的标识符。
select left(CONTRACT_NAME,2)fromgb_t_contract where 1=1;#从标识符关系式最左侧一个字符逐渐回到特定数量的标识符.#若 b 的值超过 a 的长短,则回到标识符关系式的所有标识符a.假如 b 为负数或 0,则回到空字符串.select left('2323232',9) ;# 传参为空
LTRIM()/RTRIM()/TRIM()删掉字符串数组的左/右或全部空帧。
selectltrim('sample')fromtable;#回到結果:'sample 'selectrtrim('sample')fromtable;#回到結果:' sample'selecttrim('sample')fromtable;# 回到結果:'sample'
SOUNDEX()回到字符串数组SOUNDEX值。
#类似配对SELECT cust_name, cust_contact FROM Customers WHERE SOUNDEX(cust_contact) = SOUNDEX('Michael Green');
CAST数据信息数据转换。
# 将str种类的dt字段名变换为int类型的selectcast(dtasint)dtfrom table
拿百分数。
百分位数()
英语的语法文件格式:
percent _ approach(double col,p,[b])近似于平均值涵数。
百分位数(双栏,p)平均值涵数。
前面一种多了一个主要参数b,后面一种沒有主要参数,其他英语的语法一致。
要寻找类似的pth百分位数,p务必处于0和1中间,而且回到种类是double,可是col字段名适用浮点数种类。主要参数b操纵运行内存耗费的类似精密度,主要参数b越大,結果的精密度越高。初始值为10,000。当列字段名中不一样值的总数低于B时,結果是精确的百分位数。
selectpercentile(mmr,0.3)as30_percentile,percentile_approx(mmr,0.5)50_percentilefrommatch_table
限定个数
LIMIT的使用方法。
selectaccount_id,account_namefromtablelimt 100
恢复出厂设置表明
FORMAT()数据类型。
FORMAT()涵数用以恢复出厂设置字段名的表明。
SQL FORMAT()英语的语法:
从表名中挑选文件格式(字段名,文件格式);
FORMAT(X,D):强制性保存D个小数位。假如整数金额一部分超出三位数,则用分号隔开,回到的結果为字符串类型。
SELECTFORMAT(100.3465,2),FORMAT(100,2),FORMAT(,100.6,2);#結果各自:100.35,100.00,100.60
子查询
1.子查询条件过虑。
SELECT cust_idFROM OrdersWHERE order_num IN (SELECT order_numFROM OrderItemsWHERE prod_id = 'RGAN01');
2.做为测算字段名的子查询。
SELECT cust_name, cust_state, (SELECT COUNT(*) FROM Orders WHERE Orders.cust_id = Customers.cust_id) AS orders FROM CustomersORDER BY cust_name;
1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:duhaomu@163.com,我们将第一时间处理!
2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。
3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明。