SQL笔记#函数、谓词、CASE表达式
目录
一、各种各样的函数
1、函数的种类
2、算术函数
ABS——绝对值
MOD——取余
ROUND——四舍五入
3、字符串函数
||——拼接
LENGTH——字符串长度
LOWER——小写转换
REPLACE——字符串的替换
SUBSTR——字符串的截取
UPPER——大写转换
4、日期函数
CURRENT_DATE——当前日期
CURRENT_TIME——当前时间
CURRENT_TIMESTAMP——当前日期和时间
EXTRACT——截取日期元素
5、转换函数
CAST——类型转换
二、谓词
1、什么是谓词
2、LIKE谓词——字符串的部分一致查询
3、BETWEEN谓词——范围查询
4、IS NULL、IS NOT NULL——判断是否为NULL
5、IN谓词——OR的简便用法
6、使用子查询作为IN谓词的参数
7、EXIST谓词
三、CASE表达式
1、什么是CASE表达式
2、CASE表达式的语法
3、CASE表达式的使用方法
一、各种各样的函数
1、函数的种类
函数,就是输入某一值(参数),得到相应输出结果(输出值)的功能。函数大致可分为以下几种类型:
1、算数函数(用来作为数值计算的函数)
2、字符串函数(用来进行字符串操作的函数)
3、日期函数(用来进行日期操作的函数)
4、转换函数(用来转化数据类型和值的函数)
5、聚合函数(用来进行数据聚合的函数)
2、算术函数
NUMEIC是大多数DBMS都支持的一种数据类型,通过NUMERIC(全体位数,全体小数)的形式来指定数值的大小。
--DDL:创建表
CREATE TABLE SampleMath
(m NUMERIC (10,3),
n INTEGER,
p INTEGER);
--DML:插入数据
BEGIN TRANSACTION;
INSERT INTO SampleMath(m, n, p) VALUES (500, 0, NULL);
INSERT INTO SampleMath(m, n, p) VALUES (-180, 0, NULL);
INSERT INTO SampleMath(m, n, p) VALUES (NULL, NULL, NULL);
INSERT INTO SampleMath(m, n, p) VALUES (NULL, 7, 3);
INSERT INTO SampleMath(m, n, p) VALUES (NULL, 5, 2);
INSERT INTO SampleMath(m, n, p) VALUES (NULL, 4, NULL);
INSERT INTO SampleMath(m, n, p) VALUES (8, NULL, 3);
INSERT INTO SampleMath(m, n, p) VALUES (2.27, 1, NULL);
INSERT INTO SampleMath(m, n, p) VALUES (5.555,2, NULL);
INSERT INTO SampleMath(m, n, p) VALUES (NULL, 1, NULL);
INSERT INTO SampleMath(m, n, p) VALUES (8.76, NULL, NULL);
COMMIT;
-- 确认创建好的表
SELECT * FROM SampleMath;
m | n | p
----------+---+---
500.000 | 0 |
-180.000 | 0 |
| |
| 7 | 3
| 5 | 2
| 4 |
8.000 | | 3
2.270 | 1 |
5.555 | 2 |
| 1 |
8.760 | |
ABS——绝对值
postgres=# SELECT m,
postgres-# ABS(m) AS abs_col
postgres-# FROM SampleMath;
m | abs_col
----------+---------
500.000 | 500.000
-180.000 | 180.000
|
|
|
|
8.000 | 8.000
2.270 | 2.270
5.555 | 5.555
|
8.760 | 8.760
MOD——取余
MOD(被除数,除数)
postgres=# select n,p,
postgres-# MOD(n,p) AS mod_col
postgres-# FROM SampleMath;
n | p | mod_col
---+---+---------
0 | |
0 | |
| |
7 | 3 | 1
5 | 2 | 1
4 | |
| 3 |
1 | |
2 | |
1 | |
| |
ROUND——四舍五入
ROUND(对象数值,保留小数的数值)
SELECT m, n,
ROUND(m, n) AS round_col
FROM SampleMath;
3、字符串函数
--创建SampleStr表(不做具体代码说明)
str1 | str2 | str3
-----------+------+------
opx | rt |
abc | def |
山田 | 太郎 | 是我
aaa | |
| xyz |
@!#$% | |
ABC | |
aBC | |
abc太郎 | abc | ABC
abcdefabc | abc | ABC
micmic | i | I
||——拼接
字符串1||字符串2
SELECT str1, str2,
str1 || str2 AS str_concat
FROM SampleStr;
str1 | str2 | str_concat
-----------+------+--------------
opx | rt | opxrt
abc | def | abcdef
山田 | 太郎 | 山田太郎
aaa | |
| xyz |
@!#$% | |
ABC | |
aBC | |
abc太郎 | abc | abc太郎abc
abcdefabc | abc | abcdefabcabc
micmic | i | micmici
postgres=# SELECT str1, str2, str3,
postgres-# str1 || str2 || str3 AS str_concat
postgres-# FROM SampleStr
postgres-# WHERE str1 = '山田';
str1 | str2 | str3 | str_concat
------+------+------+--------------
山田 | 太郎 | 是我 | 山田太郎是我
LENGTH——字符串长度
LENGTH(字符串)
postgres=# SELECT str1,
postgres-# LENGTH(str