atomy

一、字符串函数

1.1、CONCAT(str1,str2,...)

作用:将传入的字符连接成一个字符串,任何字符与null进行连接结果都是null。

SELECT CONCAT(`name`,\'-\',sex) FROM study11;

1.2、INSERT(str,pos,len,newstr)

作用:将字符串str从pos位置开始len个字符长的子串,替换为指定的字符newstr。

SELECT INSERT(\'ABCDEFG\',2,3,\'XXX\');

说明:SQL Server中对应的函数是STUFF。

SELECT STUFF(\'ABCDEFG\',2,3,\'XXX\')

1.3、LOWER(str)

作用:将字符串转成小写。

SELECT LOWER(\'ABC\');

1.4、UPPER(str)

作用:将字符串转成大写。

SELECT UPPER(\'abc\');

1.5、LEFT(str,len)

作用:返回字符串str最左边的len个字符。

SELECT LEFT(\'abc\',2);

1.6、RIGHT(str,len)

作用:返回字符串str最右边的len个字符。

SELECT RIGHT(\'abc\',2);

1.7、LPAD(str,len,padstr)

作用:用字符串padstr对str最左边进行填充,直到总长度达到len个字符为止。

SELECT LPAD(\'abc\',10,\'def\');

说明:SQL Server中没有对应的函数。

1.8、RPAD(str,len,padstr)

作用:用字符串padstr对str最右边进行填充,直到总长度达到len个字符为止。

SELECT RPAD(\'abc\',10,\'def\');

 说明:SQL Server中没有对应的函数。

1.9、LTRIM(str)

作用:去除字符串当中最左侧的空格。

SELECT LTRIM(\'   abc\');

1.10、RTRIM(str)

作用:去除字符串当中最右侧的空格。

SELECT RTRIM(\'abc   \');

1.11、TRIM([remstr FROM] str)

完整格式:TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)

作用:返回字符串str,其中所有remstr前缀和/或后缀都已被去除。若分类符BOTH、LEADIN或TRAILING中没有一个是给定的,则假设为BOTH。remstr为可选项,在未指定情况下,可去除空格。

1)去除两侧空格。

SELECT TRIM(\'   abc   \');

2)去除两侧\'x\'字符。

SELECT TRIM(BOTH \'x\' FROM \'xxxbarxxx\');

3)去除左侧\'x\'字符。

SELECT TRIM(LEADING \'x\' FROM \'xxxbarxxx\');

4)去除右侧\'x\'字符。

SELECT TRIM(TRAILING \'x\' FROM \'xxxbarxxx\');

5)去除右侧\'xyz\'字符串。

SELECT TRIM(TRAILING \'xyz\' FROM \'barxyzxyz\');

 说明:SQL Server中没有对应的函数。

1.12、REPEAT(str,count)

作用:返回str重复count次的结果。

SELECT REPEAT(\'abc\',3);

 说明:SQL Server中没有对应的函数。

1.13、REPLACE(str,from_str,to_str)

作用:用字符串to_str替换字符串str中所有出现的字符串from_str。

SELECT REPLACE(\'mysql\',\'my\',\'hello my\');

1.14、SUBSTRING(str FROM pos FOR len)

作用:返回字符串str中第pos位置起len个字符长度的字符。

SELECT SUBSTRING(\'abc\',2,2);

二、数值函数

2.1、ABS(X)

作用:返回X的绝对值。

SELECT ABS(-1);

2.2、CEILING(X)

作用:小数不为零部分向上取整,即向上取最近的整数。

SELECT CEILING(1.1);

2.3、FLOOR(X)

作用:小数不为零部分向下取整,即向下取最近的整数。

SELECT FLOOR(2.3);

2.4、MOD(N,M)

作用:返回N/M的模,即求余。

SELECT MOD(5,2);
SELECT 5%2;

说明:SQL Server中没有对应的函数,只能通过%求余。

SELECT 5%2

2.5、RAND()

作用:返回0-1内容的随机值。

SELECT CEILING(RAND()*10);

三、日期和时间函数

3.1、CURDATE()

作用:返回当前日期,只包含年月日。

SELECT CURDATE();

说明:SQL Server中没有对应的函数。

3.2、CURTIME()

作用:返回当前时间,只包含时分秒。

SELECT CURTIME();

说明:SQL Server中没有对应的函数。

3.3、NOW()

作用:返回当前日期和时间,年月日时分秒都包含。

SELECT NOW();

说明:SQL Server中对应的函数是GETDATE。

SELECT GETDATE()

3.4、UNIX_TIMESTAMP()

作用:

SELECT UNIX_TIMESTAMP();

说明:SQL Server中没有对应的函数。

3.5、FROM_UNIXTIME(unix_timestamp)

作用:

SELECT FROM_UNIXTIME(1599560172);

说明:SQL Server中没有对应的函数。

3.6、WEEK(date)

作用:返回当前是一年中的第几周。

SELECT WEEK(NOW());

说明:SQL Server中对应的函数是DATEPART。

SELECT DATEPART(WEEK,GETDATE())

3.7、YEAR(date)

作用:返回所给日期是哪一年。

SELECT YEAR(NOW());

3.8、HOUR(time)

作用:返回当前时间的小时。

SELECT HOUR(NOW());

说明:SQL Server中对应的函数是DATEPART。

SELECT DATEPART(HOUR,GETDATE())

3.9、MINUTE(time)

作用:返回当前时间的分钟。

SELECT MINUTE(NOW());

说明:SQL Server中对应的函数是DATEPART。

SELECT DATEPART(MINUTE,GETDATE())

3.10、DATE_FORMAT(date,format)

作用:用于以不同的格式显示日期/时间数据。

SELECT DATE_FORMAT(NOW(),\'%Y-%m-%d\');
SELECT DATE_FORMAT(NOW(),\'%Y%m%d\');
SELECT DATE_FORMAT(NOW(),\'%y%m%d\');

说明:SQL Server中对应的函数是CONVERT。

SELECT CONVERT(VARCHAR(10),GETDATE(),120)
SELECT CONVERT(VARCHAR(10),GETDATE(),112)
SELECT CONVERT(VARCHAR(10),GETDATE(),12)

3.11、DATE_ADD(date,INTERVAL expr unit)

作用:向日期添加指定的时间间隔。

SELECT DATE_ADD(NOW(),INTERVAL 3 DAY);
SELECT DATE_ADD(NOW(),INTERVAL 1 MONTH);

说明:SQL Server中对应的函数是DATEADD。

SELECT DATEADD(DAY,3,GETDATE())
SELECT DATEADD(MONTH,1,GETDATE())

3.12、DATEDIFF(expr1,expr2)

作用:返回两个日期之间的天数。

SELECT DATEDIFF(\'2020-06-06\',NOW());

说明:SQL Server中对应的函数是DATEDIFF,不过结果是相反的。

SELECT DATEDIFF(DAY,\'2020-06-06\',GETDATE())

四、流程函数

4.1、IF(expr1,expr2,expr3)

作用:如果expr1是真,返回expr2,否则返回expr3。

SELECT IF(2>3,TRUE,FALSE);

说明:SQL Server中对应的函数是IIF。

SELECT IIF(2>3,1,0)

4.2、IFNULL(expr1,expr2)

作用:如果expr1不为空,返回expr1,否则返回expr2。

SELECT IFNULL(\'abc\',\'def\');
SELECT IFNULL(NULL,\'def\');

说明:SQL Server中对应的函数是ISNULL。

SELECT ISNULL(\'abc\',\'def\')
SELECT ISNULL(NULL,\'def\')

4.3、CASE WHEN THEN END

作用:查询满足多种条件的情况。

/*写法一*/
#用户变量,需使用@符号,也可以定义为SELECT @sex:=\'male\';
SET @sex=\'male\';
SELECT CASE @sex
    WHEN \'male\' THEN
        \'\'
    ELSE
        \'\'
END AS \'性别\';

/*写法二*/
SET @score=90;
SELECT 
    CASE 
        WHEN @score BETWEEN 90 AND 100 THEN \'A+\'
        WHEN @score BETWEEN 80 AND 89 THEN \'A\'
        WHEN @score BETWEEN 60 AND 79 THEN \'B\'
        ELSE \'C\'
    END AS \'评级\';

五、其它常用函数

5.1、DATABASE()

作用:返回当前数据库名。

SELECT DATABASE();

说明:SQL Server中对应的函数是DB_NAME。

--方法一
SELECT DB_NAME()
--方法二
SELECT NAME FROM MASTER..SYSDATABASES WHERE DBID=(SELECT DBID FROM MASTER..SYSPROCESSES WHERE SPID = @@SPID)

5.2、VERSION()

作用:返回当前数据库版本。

SELECT VERSION();

5.3、USER()

作用:返回当前登录用户名。

SELECT USER();

说明:SQL Server中对应的函数是SUSER_NAME。

SELECT SUSER_NAME()

5.4、PASSWORD(str)

作用:返回str的PASSWORD加密值。

SELECT PASSWORD(\'abc\');

说明:SQL Server中没有对应的函数。

5.5、MD5(str)

作用:返回str的MD5值。

SELECT MD5(\'abc\');

说明:SQL Server中对应的函数是HASHBYTES。

SELECT HASHBYTES(\'MD5\',\'abc\')

 

分类:

技术点:

相关文章: