码迷,mamicode.com
首页 > 其他好文 > 详细

几种常用的函数

时间:2019-06-15 11:37:30      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:文字   sign   mon   插入数据   s函数   dual   ora   esc   无限   

函数的种类:
  • 算数函数(数值计算的函数)
  • 字符串函数(字符串操作的函数)
  • 日期函数(用来进行日期操作的函数)
  • 转换函数(用来转换数据类型和值的函数)
  • 聚合函数(用来进行数据聚合的函数)

算数函数(+-*/):
1.ABS()——函数(计算绝对值)

select m,abs(m) as abs_col from SampleMath;

2.mod()——求余函数

-- 计算n/p的余数(SQL Server不支持此函数)
select n,p, mod(n,p) as mod_col from SampleMath;

3.round()——四舍五入函数,round(对象数值,保留的小数的位数)

-- 对m列的数值进行n列位数的四舍五入处理。
select m, n , round(m,n) as round_col from SampleMath;

字符串函数

1.|| ——字符串拼接(此函数无法在mysql及sql server中运行)

select str1, str2, str1||str2 as str_concat from SampleStr;

2.length(字符串)——字符传长度函数(确认字符串中包含多少个字符)

select str1, length(str1) as len_str from SampleStr;

3.lower(字符串)——小写转换,只能针对英文字母使用

select str1, lower(str1) as low_str 
  from SampleStr
where str1 in ('ABC', 'aBC', 'abc', '山田');

4.replace(对象字符串,替换前的字符串,替换后的字符串)——将字符串替换成其他字符串

-- 如果str1包含str2,则将str1中的str2替换成str3
select str1, str2, str3, replace(str1, str2, str3) as rep_str
from SampleStr;

5.substring函数——字符串截取(是适用于postgresql 和 mysql)

-- substring(对象字符串 from 截取的起始位置 for 截取的字符串)
-- 截取出str1中的第三第四个字符串
select str1, substring(str1 from 3 for 2) as sub_str from SampleStr;

6.upper(字符串)——小写转大写

SELECT str1,UPPER(str1) AS up_str
FROM SampleStr
WHERE str1 IN ('ABC', 'aBC', 'abc', '山田');

日期函数

1.CURRENT_DATE ——当前日期(返回当前日期)

-- mysql写法
select CURRENT_DATE;

-- oracle写法
select CURRENT_DATE from dual;

2.CURRENT_TIME ——当前时间

select CURRENT_TIME;

3.CURRENT_TIMESTAMP ——当前日期和时间

select CURRENT_TIMESTAMP;

4.EXTRACT(unit FROM date)——截取日期元素,截取出日期的一部分(年/月/日小时/秒等)

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;  

转换函数

1.CAST()——类型转换

-- CASE(转换前的值 AS 转换后的数据类型)
select CAST('00001' AS SIGNED INTEGER) AS int_col;

2.将字符转换为日期类型

select cast('2018-11-12' AS DATE) AS sate_col;

3.COALESC()E——将null转换为其他值
COALESCE(参数1,参数2,参数3.....)参数个数时可变的,可以无限个。

--SQL Server, PostgreSQL, MySQL
SELECT COALESCE(NULL, 1) AS col_1,
       COALESCE(NULL, 'test', NULL) AS col_2,
       COALESCE(NULL, NULL, '2009-11-01') AS col_3;
       
-- 将字段str2中的null值转成字符串为null的值。
select COALESCE(str2,'null') from samplestr;

(expression_1, expression_2, ...,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。使用COALESCE在于大部分包含空值的表达式最终将返回空值。

建表语句

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

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

几种常用的函数

标签:文字   sign   mon   插入数据   s函数   dual   ora   esc   无限   

原文地址:https://www.cnblogs.com/sanzashu/p/11026918.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!