热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL谓词选择性解析及函数应用实例分析

本文总结并深入探讨了MySQL中谓词选择性的解析方法及其在函数应用中的实例分析。首先,详细介绍了算术函数,特别是NUMERIC数据类型,该类型在多数数据库管理系统中广泛应用,用于精确表示数值数据,包括指定总体位数和小数位数。此外,文章还结合实际案例,分析了如何利用这些函数优化查询性能,提高数据处理效率。

前文已有涉及,这里作为总结重新整理一下。

一、函数

1、算术函数

NUMERIC 是大多数 DBMS 都支持的一种数据类型,通过 NUMBERIC ( 全体位数, 小数位数 ) 的形式来指定数值的大小。-- +-*/

--余数

SELECT n, p, MOD(n, p) AS mod_col FROM SampleMath;

--绝对值

SELECT m, ABS(m) AS abs_col FROM SampleMath;

--四舍五入

SELECT m, n, ROUND(m, n) AS round_col FROM SampleMath;

2、字符串函数--字符串拼接

SELECT str1, str2, str3, CONCAT(str1, str2, str3) AS str_concat FROM SampleStr

--字符串长度

SELECT str1, LENGTH(str1) AS len_str FROM SampleStr;

--大小写转换

SELECT str1, UPPER/LOWER(str1) AS low_str FROM SampleStr WHERE str1 IN ('ABC', 'aBC', 'abc')

--字符串替换str1中的str2换为str3

SELECT str1, str2, str3, REPLACE(str1, str2, str3) AS rep_str FROM SampleStr;

--字符串截取 FROM截取的起始位置FOR截取的字符数

SELECT str1, SUBSTRING(str1 FROM 3 FOR 2) AS sub_str FROM SampleStr;

3、日期函数--当前日期

SELECT CURRENT_DATE;

--当前时间

SELECT CURRENT_TIME;

--当前时间戳

SELECT CURRENT_TIMESTAMP;

--截取日期元素

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 CURRENT_TIMESTAMP) AS second;

4、转换函数--类型转换

SELECT CAST('0001' AS SIGNED INTEGER) AS int_col;

SELECT CAST('2009-12-14' AS DATE) AS date_col;

--将 NULL 转换为其他值

--返回可变参数中左侧开始第 1 个不是 NULL 的值

SELECT COALESCE(NULL, 1) AS col_1,

COALESCE(NULL, 'test', NULL) AS col_2,

COALESCE(NULL, NULL, '2009-11-01') AS col_3;

5、聚合函数

COUNT、SUM、AVG、MAX、MIN

更多函数与运算符

二、谓词

谓词的作用就是“判断是否存在满足某种条件的记录”。如果存在这样的记录就返回真(TRUE),如果不存在就返回假(FALSE)。--部分一致查询

LIKE

--范围查询

BETWEEN

--判断是否为NULL

IS NULL、IS NOT NULL

--OR 的简便用法

IN

--谓词的主语是“记录”...没懂!

EXISTS

三、CASE 表达式--格式

CASE WHEN THEN

WHEN THEN

WHEN THEN

.

.

.

ELSE

END-- 使用搜索CASE表达式的情况

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

FROM Product;

-- 使用简单CASE表达式的情况

SELECT product_name,

CASE product_type

WHEN '衣服' THEN 'A :' || product_type

WHEN '办公用品' THEN 'B :' || product_type

WHEN '厨房用具' THEN 'C :' || product_type

ELSE NULL

END AS abc_product_type

FROM Product;--使用IF代替CASE表达式

SELECT product_name,

IF( IF( IF(product_type = '衣服',

CONCAT('A :', product_type), NULL)

IS NULL AND product_type = '办公用品',

CONCAT('B :', product_type),

IF(product_type = '衣服',

CONCAT('A :', product_type), NULL))

IS NULL AND product_type = '厨房用具',

CONCAT('C :', product_type),

IF( IF(product_type = '衣服',

CONCAT('A :', product_type), NULL)

IS NULL AND product_type = '办公用品',

CONCAT('B :', product_type),

IF(product_type = '衣服',

CONCAT('A :', product_type),

NULL))) AS abc_product_type

FROM Product;



推荐阅读
author-avatar
广东暖暖_小乖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有