今天SQL系列产品的第三讲。大家将探讨标准查看,文本检索,百分数,行限定,文件格式和子查询。

sql在线格式化快捷键-sql语句格式化时间格式-第1张图片标准查看

高频查看。

#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;

评论(0条)

刀客源码 游客评论