函数使用时候常见的格式:
SELECT ...,function(...) AS 别名 FROM 表名;
函数的种类
- 算数函数
- 字符串函数
- 日期函数
- 转换函数
- 聚合函数
算数函数:
- 运算符 + - * /
- 绝对值 ABS()
- 求余 MOD()
- 四舍五入 ROUND()
字符串函数:
- 拼接: string1||string2||... mysql 似乎不支持 但是有CONCAT(str1,str2...)
- 获得长度:LENGTH(str)
- 小写转换:LOWER(str),大写转换是 UPPER(str)
- 字符串的替换:REPLACE(str1,str2,str3)
str1,str2,str3 分别代表,被替换的整个字符串,被替换字符串中真正要被替换的部分字符串,替换字符串 - 字符串的截取:SUBSTRING(对象字符串 FROM 起始位置 FOR 结束位置)
日期函数:
- 获得当前日期:CURRENT_DATE,使用时候
SELECT CURRNENT_DATE; - 获得当前时间:CURRENT_TIME 使用方式同上
- 获得当前日期和时间:CURRENT_TIMESTAMP --时间戳
- 截取想要的时间元素:EXTRACT(日期元素 FROM 日期);
比如 SELECT EXTRACT(YEAR FROM CURRENT_TIMESTAMP) AS year;
转换函数
- 类型转换
CAST(转换前的值 AS 想转换成的类型)
比如:SELECT CAST('0001' AS INTEGER) AS int_col; - 将NULL转换为其他值
COALESCE(数据1,数据2.。。。)
它会返回参数中第一个不是NULL的
使用
SELECT COALESCE(<col_name1>,<value>) FROM table_name;
这样所有NULL的值都被<value>替换掉了
谓词
- LIKE
- BETWEEN
- IS NULL , IS NOT NULL
- IN
- EXISTS
LIKE -- 字符串的部分一致查询
建一张表 只有一列存放字符串的列 strcol 表名叫 sampleLike
以下代码做前方一致查询:
SELECT * FROM SampleLike WHERE strcol LIKE 'ddd%'
效果是 比如 有 dddda dddab abcdddd
第一个和第二被选择出来
%相当于告诉我们这个地方有字符
所以
前方查询 <查询字符串>%
中间查询 %<查询字符串>%
后方查询 %<查询字符串>
BETWEEN --范围查询
SELECT product_name,sale_price FROM Product
WHERE sale_price BETWEEN 100 AND 1000;
IS NULL 或者 IS NOT NULL
purchase_price IS NULL 是一个判断,判断其是否是NULL
IN
SELECT product_name, purchase_price
FROM Product
WHERE purchase_price = 320
OR purchase_price = 500
OR purchase_price = 5000;
等价于
SELECT product_name, purchase_price
FROM Product
WHERE purchase_price IN (320,500,5000);
EXISTS
SELECT product_name sale_price
FROM Product AS P
WHERE EXITS (SELECT * FROM shopProduct AS SP WHERE SP.shopid = '000C' AND SP.product_id = P.product_id);
EXITS 后面接的对象如果存在就返回TRUE 否则返回FALSE
返回TURE 的对象被选择,FALSE则不会
CASE 表达式
CASE表达式--条件分支
语法:
CASE WHEN <condition> THEN <expression>
WHEN <condition> THEN <expression>
.....ELSE <expression>
END
SELECT product_name,
CASE WHEN product_type = '衣服' THEN 'A:'||product_type
WHEN product_type = '办公用品' THEN 'B:'||product_type
WHEN product_type = '厨房用品' THEN 'C:'||product_type
ELSE NULL
END AS abc_product_type;
结果是 两列 product_name 和 abc_product_type
abc_product_type 那里有分类'A:衣服' 'B:办公用品' 'C:厨房用具'
网友评论