文章插图
今天是SQL系列的第三讲,我们会讲解条件查询,文本处理,百分比,行数限制,格式化以及子查询 。
条件查询
IF条件查询
#if的语法IF(expr1,expr2,expr3)#示例SELECT IF(sva=1,"男","女") AS s FROM table_name WHERE sva != '';?CASE WHEN条件查询
case when 可以实现if函数的功能,同时也可以联合各类聚合函数使用 。
# case when也可以实和if一样的功能?SELECT CASE WHEN sva=1 THEN '男'ELSE '女' END AS s FROM table_nameWHERE sva != '';#case when可以联合聚合函数等使用?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 :被截取的字符串或字符串表达式
m 从第m个字符开始截取
n 截取后字符串长度为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()字符串分割
语法结构
split(str, regex) – Splits
str:需要分割的字符
regex:以什么符号进行分割
1.基本用法
split('a,b,c,d',',')#得到的结果:["a","b","c","d"]2.截取字符串中的某个值
当然,我们也可以指定取结果数组中的某一项
split('a,b,c,d',',')[0]#得到的结果:a3.特殊字符的处理
特殊分割符号
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_tbLEFT()/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取百分比
percentile()
语法格式:
percentile_approx(DOUBLE col, p ,[B])) 近似中位数函数
percentile(DOUBLE col, p ) 中位函数
前者多了一个参数B,后者无参数,其余语法一致 。
求近似的第pth个百分位数,p必须介于0和1之间,返回类型为double,但是col字段支持浮点类型 。参数B控制内存消耗的近似精度,B越大,结果的准确度越高 。默认为10,000 。当col字段中的distinct值的个数小于B时,结果为准确的百分位数 。
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- linux安装mysql详细步骤 linux mysql 安装教程
- 早上吸引朋友圈的句子 早上令人心情舒服的语句
- sql数据库使用教程 数据库datetime格式
- 励志的句子经典语句 发朋友圈充满正能量的金句
- 正能量的句子经典语句,发朋友圈激励自己努力的话
- sql数据库三种备份和恢复 sqlserver还原数据库修复
- 技术教你win7如何格式化c盘 win7怎么格式化c盘
- mysql数据库备份方法 mysql备份数据库命令
- 简短精辟的励志哲理句子 励志的句子经典语句
- 超励志的句子,句句经典走心,很适合发朋友圈 励志的句子经典语句