• SQL几种常用的函数


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

    算数函数(+-*/):

    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;
    
  • 相关阅读:
    (转)基于MapWinGis开发探索(一)
    ArcGIS Server REST API开发相关新词汇
    自写地图全图功能
    向远程目录写数据
    GetUpperBound方法
    监控安装教程
    办公室局域网打印机共享设置
    电脑Bois中usb模式启动热键
    SQL SERVER 2005无法远程连接
    用网线直接把打印机连入网络的问题
  • 原文地址:https://www.cnblogs.com/sanzashu/p/11026918.html
Copyright © 2020-2023  润新知