SQL基础教程(第2版)第6章 函数、谓词、CASE表达式:6-1 函数

所谓函数,
就是输入某一值得到相应输出结果的功能,输入值称为参数(parameter)
输出值称为返回值


算术函数

为了学习算术函数,我们首先根据代码清单 6-1 创建一张示例用表
SampleMath
)。

由于 PostgreSQL 中的 ROUND函数只能使用 NUMERIC 类型的数据,因此我们在示例中也使用了该数据类型。

--Mysql
--DDL:创建表
CREATE TABLE SampleMath
(m  NUMERIC (10,3),
 n  INTEGER,
 p  INTEGER);

--DML:插入数据
START 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;
View Code --Mysql

ABS——绝对值
ABS 是计算绝对值的函数。 绝对值absolute value)不考虑数值的符号,表示一个数到原点的距离。 

MOD——求余

ROUND——四舍五入


字符串函数
在日常生活中,我们经常会像使用数字那样,对字符串进行替换、截
取、简化等操作,因此 SQL 也为我们提供了很多操作字符串的功能。
为了学习字符串函数,我们再来创建一张表(SampleStr),参见代码清单 6-5

--MySQL
--DDL:创建表
CREATE TABLE SampleStr
(str1  VARCHAR(40),
 str2  VARCHAR(40),
 str3  VARCHAR(40));

--DML:插入数据
START TRANSACTION;

INSERT INTO SampleStr (str1, str2, str3) VALUES ('opx',            'rt'    ,    NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES ('abc'    ,    'def'    ,    NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES ('山田'    ,    '太郎'  ,    '是我');
INSERT INTO SampleStr (str1, str2, str3) VALUES ('aaa'    ,    NULL    ,    NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES (NULL    ,    'xyz',            NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES ('@!#$%',    NULL    ,    NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES ('ABC'    ,    NULL    ,    NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES ('aBC'    ,    NULL    ,    NULL);
INSERT INTO SampleStr (str1, str2, str3) VALUES ('abc太郎',    'abc'    ,    'ABC');
INSERT INTO SampleStr (str1, str2, str3) VALUES ('abcdefabc',   'abc'    ,    'ABC');
INSERT INTO SampleStr (str1, str2, str3) VALUES ('micmic',          'i',        'I');

COMMIT;


--确认表中的内容
SELECT * FROM SampleStr;
View Code --MySQL

||——拼接


 

|| 函数在 SQL Server 和 MySQL 中无法使用。 

LENGTH——字符串长度



LOWER——小写转换
   UPPER ——大写转换

REPLACE——字符串的替换


SUBSTRING——字符串的截取


日期函数
虽然 SQL 中有很多日期函数,但是其中大部分都依存于各自的 DBMS
因此无法统一说明 。本节将会介绍那些被标准 SQL 承认的可以应用于
绝大多数 DBMS 的函数。
CURRENT_DATE——当前日期

CURRENT_TIME——当前时间

CURRENT_TIMESTAMP——当前日期和时间


--PostgreSQL, MySQL
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;
View Code --PostgreSQL, MySQL
--Oracle
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
FROM DUAL;
View Code --Oracle
--SQL Server
SELECT CURRENT_TIMESTAMP,
       DATEPART(YEAR   , CURRENT_TIMESTAMP) AS year,
       DATEPART(MONTH  , CURRENT_TIMESTAMP) AS month,
       DATEPART(DAY    , CURRENT_TIMESTAMP) AS day,
       DATEPART(HOUR   , CURRENT_TIMESTAMP) AS hour,
       DATEPART(MINUTE , CURRENT_TIMESTAMP) AS minute,
       DATEPART(SECOND , CURRENT_TIMESTAMP) AS second;
View Code --SQL Server

转换函数
CAST——类型转换


COALESCE——将NULL转换为其他值

猜你喜欢

转载自www.cnblogs.com/MarlonKang/p/12230915.html