MySQL學習筆記七:經常使用函數

1、字符串函數

1.一、CONCAT(str1,str2,...)mysql

做用:將傳入的字符鏈接成一個字符串,任何字符與null進行鏈接結果都是null。sql

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

1.二、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.三、LOWER(str)spa

做用:將字符串轉成小寫。unix

SELECT LOWER('ABC');

1.四、UPPER(str)code

做用:將字符串轉成大寫。orm

SELECT UPPER('abc');

1.五、LEFT(str,len)blog

做用:返回字符串str最左邊的len個字符。

SELECT LEFT('abc',2);

1.六、RIGHT(str,len)

做用:返回字符串str最右邊的len個字符。

SELECT RIGHT('abc',2);

1.七、LPAD(str,len,padstr)

做用:用字符串padstr對str最左邊進行填充,直到總長度達到len個字符爲止。

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

說明:SQL Server中沒有對應的函數。

1.八、RPAD(str,len,padstr)

做用:用字符串padstr對str最右邊進行填充,直到總長度達到len個字符爲止。

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

 說明:SQL Server中沒有對應的函數。

1.九、LTRIM(str)

做用:去除字符串當中最左側的空格。

SELECT LTRIM('   abc');

1.十、RTRIM(str)

做用:去除字符串當中最右側的空格。

SELECT RTRIM('abc   ');

1.十一、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.十二、REPEAT(str,count)

做用:返回str重複count次的結果。

SELECT REPEAT('abc',3);

 說明:SQL Server中沒有對應的函數。

1.1三、REPLACE(str,from_str,to_str)

做用:用字符串to_str替換字符串str中全部出現的字符串from_str。

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

1.1四、SUBSTRING(str FROM pos FOR len)

做用:返回字符串str中第pos位置起len個字符長度的字符。

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

2、數值函數

2.一、ABS(X)

做用:返回X的絕對值。

SELECT ABS(-1);

2.二、CEILING(X)

做用:小數不爲零部分向上取整,即向上取最近的整數。

SELECT CEILING(1.1);

2.三、FLOOR(X)

做用:小數不爲零部分向下取整,即向下取最近的整數。

SELECT FLOOR(2.3);

2.四、MOD(N,M)

做用:返回N/M的模,即求餘。

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

說明:SQL Server中沒有對應的函數,只能經過%求餘。

SELECT 5%2

2.五、RAND()

做用:返回0-1內容的隨機值。

SELECT CEILING(RAND()*10);

3、日期和時間函數

3.一、CURDATE()

做用:返回當前日期,只包含年月日。

SELECT CURDATE();

說明:SQL Server中沒有對應的函數。

3.二、CURTIME()

做用:返回當前時間,只包含時分秒。

SELECT CURTIME();

說明:SQL Server中沒有對應的函數。

3.三、NOW()

做用:返回當前日期和時間,年月日時分秒都包含。

SELECT NOW();

說明:SQL Server中對應的函數是GETDATE。

SELECT GETDATE()

3.四、UNIX_TIMESTAMP()

做用:

SELECT UNIX_TIMESTAMP();

說明:SQL Server中沒有對應的函數。

3.五、FROM_UNIXTIME(unix_timestamp)

做用:

SELECT FROM_UNIXTIME(1599560172);

說明:SQL Server中沒有對應的函數。

3.六、WEEK(date)

做用:返回當前是一年中的第幾周。

SELECT WEEK(NOW());

說明:SQL Server中對應的函數是DATEPART。

SELECT DATEPART(WEEK,GETDATE())

3.七、YEAR(date)

做用:返回所給日期是哪一年。

SELECT YEAR(NOW());

3.八、HOUR(time)

做用:返回當前時間的小時。

SELECT HOUR(NOW());

說明:SQL Server中對應的函數是DATEPART。

SELECT DATEPART(HOUR,GETDATE())

3.九、MINUTE(time)

做用:返回當前時間的分鐘。

SELECT MINUTE(NOW());

說明:SQL Server中對應的函數是DATEPART。

SELECT DATEPART(MINUTE,GETDATE())

3.十、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.十一、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.十二、DATEDIFF(expr1,expr2)

做用:返回兩個日期之間的天數。

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

說明:SQL Server中對應的函數是DATEDIFF,不過結果是相反的。

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

4、流程函數

4.一、IF(expr1,expr2,expr3)

做用:若是expr1是真,返回expr2,不然返回expr3。

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

說明:SQL Server中對應的函數是IIF。

SELECT IIF(2>3,1,0)

4.二、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.三、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、其它經常使用函數

5.一、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.二、VERSION()

做用:返回當前數據庫版本。

SELECT VERSION();

5.三、USER()

做用:返回當前登陸用戶名。

SELECT USER();

說明:SQL Server中對應的函數是SUSER_NAME。

SELECT SUSER_NAME()

5.四、PASSWORD(str)

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

SELECT PASSWORD('abc');

說明:SQL Server中沒有對應的函數。

5.五、MD5(str)

做用:返回str的MD5值。

SELECT MD5('abc');

說明:SQL Server中對應的函數是HASHBYTES。

SELECT HASHBYTES('MD5','abc')
相關文章
相關標籤/搜索