SQL基础学习_05_函数、谓词、CASE表达式
函数
算术函数
1. 四则运算: +、-、*、/
2. ABS:求绝对值, ABS(数值)
3. MOD: 求余,MOD(被除数,除数)
4. ROUND:四舍五入,ROUND(对象数值,保留小数的位数)
字符串函数
1. 字符串拼接: ||, str1 || str2 || str3 || … || strn AS str_all
2. 字符串长度:LENGTH,LENGTH(str1) AS len_str1
3. 小写转换:LOWER,LOWER(str1) AS low_str
4. 大写转换:UPPER,UPPER(str1) AS up_str
5. 字符串替换:REPLACE,REPLACE(替换对象, 被替换的字符串, 替换后的字符串) AS rep_str :如果替换对象中不含有被替换字符串,则不进行替换操作
6. 字符串截取:SUBSTRING,SUBSTRING(对象字符串 FROM 起始位置 FOR 截取的长度) AS sub_str
日期函数
1. CURRENT_DATE:不需要参数,直接返回当前日期,显示格式:yyyy-mm-dd
2. CURRENT_TIME:不需要参数,直接返回当前时间,显示格式:hh:mm:s
3. CURRENT_TIMESTAMP:不需要参数,同时获得日期和时间,也可以进行截取操作
4. EXTRACT:截取时间,EXTRACT(日期元素 FROM 日期)
日期元素有:YEAR、MONTH、DAY、HOUR、MINUTE、SECOND
例如:
SELECT CURRENT_TIMESTAMP
EXTRACT(YEAR FROM CURRENT_TIMESTAMP) AS year,
EXTRACT(MONTH FROM CURRENT_TIMESTAMP) AS month,
EXTRACT(DAY FROM CURRENT_TIMESTAMP) AS day,
EXTRACT(HOUR FROM CURRENT_TIMESTAMP) AS hour,
EXTRACT(MINUTE FROM CURRENT_TIMESTAMP) AS minute,
EXTRACT(SECOND FROM CURRNR_TIMESTAMP) AS second;
转换函数
1. CAST( 转换前的值 AS 想要转换的数据类型 )
例如:
SELECT CAST(‘0001’ AS INTEGER ) AS int_col; SQL Server/ PostgreSQL
SELECT CAST(‘0001’ AS SIGNED INTEGER) AS int_col; MySQL
SELECT CAST(‘0001’ AS INTEGER) AS int_col FROM DUAL; Oracle
SELECT CAST(‘0001’ AS INTEGER) AS int_col FROM SYSIBM.SYSDUMMY1; DB2
结果:
int_col
—————
1
2. COALESCE(数据1,数据2,数据3 ……) 返回左侧开始第一个不是NULL的值
谓词
LIKE
like谓词用于查询字符串部分一致,类似于简化版正则表达式,其中%表示匹配任意字符任意格式,_表示匹配一个任意字符串
例如:
查询SampleLike表中,strcol列字符串中间含有ddd的行
SELECT *
FROM SampleLike
WHERE strcol LIKE ‘%ddd%'
其他类似于:’%ddd’ ,’ddd%’ , ‘_ddd’ 等简单模式的匹配
BETWEEN
相当于 >= AND <=,例如:
SELECT shohin_mei, hanbai_tanka
FROM Shohin
WHERE hanbai_tanka BETWEEN 100 AND 1000
IS NULL 、 IS NOT NULL
用于判断是否为NULL值
IN
将多个OR条件合并,如:
SELECT shohin_mei, shiire_tanka
FROM Shohin
WHERE shiire_tanka NOT IN (320, 500, 5000)
注意:IN和NOT IN无法选取NULL值,NULL的判断只能用IS NULL 和IS NOT NULL
配合子查询中返回多个值,可以灵活使用IN谓词来做选择
如:
SELECT shohin_mei, hanbai_tanka
FROM Shohin
WHERE shohin_id IN (SELECT shohin_id
FROM TenpoShohin
WHERE tenpo_id = ‘000C')
EXIST
EXIST谓词用于判断是否存在满足某种条件的记录,多用于在子查询中替换IN达到相同目的的操作,如:
SELECT shohin_mei, hanbai_tanka
FROM Shohin AS S
WHERE EXISTS ( SELECT *
FROM TenpoShohin AS TS
WHERE TS.tenpo_id = ‘000C’
AND TS.shohin_id = S.shohin_id)
ps. 个人感觉还是IN比较直观易用一些
CASE表达式
相当于switch语句,语法为:
CASE <表达式>
WHEN <表达式> THEN <表达式>
WHEN <表达式> THEN <表达式>
...
ELSE <表达式>
END
每一个WHEN 、THEN组合相当于switch中的一个case,最后的ELSE相当于default;
CASE表达式常和SELECT结合:
SELECT <列>,
CASE WHEN <表达式> THEN <表达式>
WHEN <表达式> THEN <表达式>
…
ELSE NULL
END AS <名称>
FROM <表>;
SQL基础学习_05_函数、谓词、CASE表达式的更多相关文章
- 楼梯T-SQL:超越基础6级:使用CASE表达式和IIF函数
从他的楼梯到T-SQL DML,Gregory Larsen涵盖了更多的高级方面的T-SQL语言,如子查询. 有时您需要编写一个可以根据另一个表达式的评估返回不同的TSQL表达式的单个TSQL语句. ...
- SQL 基础学习(2) Joining 和function , 作业没有做,需要看百宝箱。NOsql的概念
SQL 基础学习(2) Joining 可以同时关联(joining)多张表进行复杂的查询. 相比于用Rails捞出数据再用Ruby进行过滤组合,使用SQL更加高效,节能. 以下是 users has ...
- Oracle SQL 基础学习
oracel sql 基础学习 CREATE TABLE USERINFO ( ID ,) PRIMARY KEY, USERNAME ), USERPWD ), EMAIL ), REDATE DA ...
- SQL 基础命令和函数
[数据操作] SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数据 [数据定义] C ...
- Node.js系列基础学习-----回调函数,异步
Node.js基础学习 Node.js回调函数 Node.js异步编程的直接体现就是回调,异步编程依托回调来实现,但不是异步.回调函数在完成任务后就会被调用,Node有很多的回调函数,其所有的API都 ...
- SQL基础学习篇--字符函数
字符函数可与SELECT,UPDATE,DELETE RIGHT()----从右侧开始选择 SELECT RIGHT(列,字符数量) FROM 表 LEFT()----从左侧开始选择 SUBSTR ...
- SQL 基础学习(1):下载DB Browser for SQLite. 下载graphviz(为了使用Rails ERD的前提)出现❌,已debug.
SQL is a standard language for storing, manipulating and retrieving data in databases. 关系型数据库:RDBMS( ...
- python基础学习2 函数变量与赋值
学习的第一步,就是通常的输出函数:print() 1.基础主要学习了变量的赋值,变量名可以疑字母.数字.下划线(_)进行命名,但是不能以数字开头 变量的赋值:变量名 = 变量值 2.模块的导入,和调用 ...
- SQL基础学习_04_视图
视图 1. 视图的创建 视图就是保存好的SELECT语句,这些SELECT语句执行之后会产生新的表,所以在SQL中,视图和表是不做差别对待的,也就是SQL也可以对视图做一些操作: 由于 ...
随机推荐
- 高质量PHP代码的50个实用技巧必备(上)
1.不要使用相对路径 常常会看到: ? 1 require_once('../../lib/some_class.php'); 该方法有很多缺点: 它首先查找指定的php包含路径, 然后查找当前目录. ...
- git学习资料包
1.廖雪峰老师的git教程:https://www.liaoxuefeng.com -----点击“GIT教程”开始学习 2.菜鸟教程git学习:http://www.runoob.com/gi ...
- ELK介绍
为什么用到ELK: 一般我们需要进行日志分析场景:直接在日志文件中 grep.awk 就可以获得自己想要的信息.但在规模较大的场景中,此方法效率低下,需要集中化的日志管理,所有服务器上的日志收集汇总. ...
- 人工智能二:TensorFlow环境搭建
一.Windows下安装虚拟机VMware Workstation,在虚拟机中安装Ubuntu(要善用搜索引擎,解决各类简单问题) VMware Workstation下载地址:http://www. ...
- 读取 DisplayName和Display(Name='')
public class UserClass { [DisplayName("名称")] //DisplayName public ...
- ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现
很长一段时间以来,我都在思考如何在ASP.NET Core的框架下,实现一套完整的事件驱动型架构.这个问题看上去有点大,其实主要目标是为了实现一个基于ASP.NET Core的微服务,它能够非常简单地 ...
- Elasticsearch和MongoDB分片及高可用对比
本文旨在对比Elasticsearch和MongoDB高可用和分片的实现机制. Elasticsearch ES天生就是分布式的,那她又是如何做到天生分布式的? 通过ES官方指南我们可以知道: 一个运 ...
- 《跟我学IDEA》四、配置模板(提高代码编写效率)
上一篇博文,我们学习了idea的一些实用配置,相信大家也对idea这个开发工具有了一个大概的了解.今天我们来学习模板的配置,idea提供很多模板从而提高编写代码的效率,比如说一些经常用的代码及生成文件 ...
- Linux CentOS完全卸载PHP
很无语,CentOS居然php版本才5.1.6,很多开源的CMS无法安装. 查看php版本命令: #php -v 下面的命令是删除不干净的 #yum remove php 因为使用这个命令以后再用 # ...
- Python爬虫(二十四)_selenium案例:执行javascript脚本
本章叫介绍如何使用selenium在浏览器中使用js脚本,更多内容请参考:Python学习指南 隐藏百度图片 #-*- coding:utf-8 -*- #本篇将模拟执行javascript语句 fr ...