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

?

时间: 2024-10-13 15:48:26

SQL基础学习_05_函数、谓词、CASE表达式的相关文章

T-SQL的基础:超越基础6级:使用CASE表达式和IIF函数

                                                                                                                                                          T-SQL的基础:超越基础6级:使用CASE表达式和IIF函数                                                                 

楼梯T-SQL:超越基础6级:使用CASE表达式和IIF函数

从他的楼梯到T-SQL DML,Gregory Larsen涵盖了更多的高级方面的T-SQL语言,如子查询. 有时您需要编写一个可以根据另一个表达式的评估返回不同的TSQL表达式的单个TSQL语句.当您需要这种功能时,您可以使用CASE表达式或IIF函数来满足此要求.在本文中,我将回顾CASE和IIF语法,并向您展示CASE表达式和IIF函数的示例. 了解CASE表达Transact-SQL CASE表达式允许您在TSQL代码中放置条件逻辑.此条件逻辑为您提供了一种在TSQL语句中放置不同代码块

MySQL基础学习之函数

数学函数 绝对值      abs() 圆周率      PI() 平方根 sqrt() 模除取余   mod(被除数,除数) 随机数      rand() 四舍五入    round(数字) 次方         pow(5,2) e为底的指数函数  exp(数字) 字符串函数 字符长度       length(字符) 字符连接       concat(字符1,字符2) 带符号的字符连接    concat_ws('-','su','zhou') 字符插入      insert('su

SQL基础语法和函数

SQL常用查询语句和函数 (2012-05-09 09:44:55) 转载▼ 标签: sql查询 函数 sql常用语句 it 分类: SQL SQL SELECT 语法 SELECT 列名称 FROM 表名称 SELECT LastName,FirstName FROM Persons --------------------------------------------------------------------------------- SQL SELECT DISTINCT 语句 在

SQL基础学习篇--字符函数

字符函数可与SELECT,UPDATE,DELETE RIGHT()----从右侧开始选择  SELECT RIGHT(列,字符数量) FROM 表 LEFT()----从左侧开始选择  SUBSTRING_INDEX----截取部分列值,会找出指定字符或字符串前的所有内容 SELECT SUBSTRING_INDEX(列,'字符(串)',1代表代表出现的‘字符(串)’是第一次,2代表出现的是第二次) FROM 表 注意:字符串特指CHAR或者VARCHAR类型的数据 SUBSTRING---截

SQL基础学习_04_视图

视图 1. 视图的创建 ? ? 视图就是保存好的SELECT语句,这些SELECT语句执行之后会产生新的表,所以在SQL中,视图和表是不做差别对待的,也就是SQL也可以对视图做一些操作: ? ? 由于视图并不实际保存数据,只是保存了执行的SELECT语句,可以节约存储空间,但是对于大数据量的存储,使用视图来频繁操作的话,势必会占用较大的计算时间,也算是一种用时间换空间的方案. ? ? 通过以下语句创建视图: ? ? CREATE VIEW 视图名称 (<视图列1>,<视图列2>,&

SQL基础学习_03_数据更新

数据的插入 1. 基本INSERT语句 ? ? INSERT的基本语法为: ? ? INSERT INTO ?<表名> (列1, 列2, 列3, ?-) VALUES (值1, 值2, 值3, -)??; ? ? 例如:INSERT INTO Shohin (shohin_mei,shohin_bunrui,hanbai_tanka,shiire_tanka,torokubi) VALUES ('pen','office',100,NULL,'2009-11-11'); ? ? 如果插入的是所

SQL基础学习_02_查询

SELECT语句 1. SELECT语句查询列(字段): ? ? SELECT <列名>? ? FROM <表名>; ? ? 该语句使用了两个SQL子句,SELECT子句列举了希望从表中查询出的列的名称,FROM子句指定选取出的数据的表的名称: ? ? 如: ? ? SELECT shohin_id, shohin_mei, shiire_tanka? ? FROM Shohin;? ? ? SELECT *? ? FROM Shohin ? ? 等: 2. SELECT语句查询行

sql基础学习

学习参考网站:http://www.runoob.com/sql/sql-tutorial.html 一.SQL命令 1.SELECT 语句 用于从数据库中选取数据. select column_name,column_name from table_name; #数据库中选取某个表格某几列数据 select * from table_name; #数据库中选取某个表格所有列数据 2.SELECT DISTINCT 语句 用于返回唯一不同的值. select distinct column_na