日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

[SQL] 函数整理(T-SQL 版)

發(fā)布時間:2024/9/21 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [SQL] 函数整理(T-SQL 版) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

函數(shù)整理(T-SQL 版)

一、數(shù)學(xué)函數(shù)

  1.求絕對值

  ABS() 函數(shù)用來返回一個數(shù)值的絕對值。

SELECT ABS(-5.38) AS absValue;

  

  2.求指數(shù)

  POWER() ?函數(shù)是用來計算指數(shù)的函數(shù)。該函數(shù)接受兩個參數(shù),第一個參數(shù)為待求冪的表達(dá)式,第二個參數(shù)為冪。

SELECT POWER(5, -0.5) AS powerValue1,POWER(5, 2) AS powerValue2,POWER(5, 3) AS powerValue3;

?

  3.求平方根

  SQRT() ?函數(shù)是用來計算平方根的函數(shù)。該函數(shù)接受一個參數(shù),這個參數(shù)為待計算平方根的表達(dá)式。

SELECT SQRT(9) AS sqrtValue1,SQRT(3) AS sqrtValue2;

  

  4.求隨機數(shù)

SELECT RAND(9527) randValue;

?

  5.舍入到最大整數(shù)

SELECT CEILING(56.67) ceilingValue1,CEILING(-56.67) ceilingValue2;

?

  6.舍入到最小整數(shù)

SELECT FLOOR(56.67) floorValue1,FLOOR(-56.67) floorValue2;

?

  7.四舍五入

  ROUND() ?函數(shù)也是用來進(jìn)行數(shù)值四舍五入的。

SELECT ROUND(56.67, 0) roundValue1,ROUND(56.67, 1) roundValue2,ROUND(-56.67, 0) roundValue3;

?

  8.求正弦值

SELECT SIN(56.67) sinValue;

?

  9.求余弦值

SELECT COS(56.67) cosValue;

?

  10.求反正弦值

SELECT 1 / 56.67,ASIN(1 / 56.67) asinValue;

?

  11.求反余弦值

SELECT 1 / 56.67,ACOS(1 / 56.67) acosValue;

?

  12.求正切值

SELECT TAN(56.67) tanValue;

?

  13.求反正切值

SELECT ATAN(56.67) atanValue;

?

  14.求 2 個變量的反正切

SELECT ATN2(56.67, 2) atn2Value;

?

  15.求余切

SELECT COT(56.67) cotValue;

?

  16.求圓周率 π 值

SELECT PI() 'pi';

?

  17.弧度制轉(zhuǎn)換為角度制

SELECT DEGREES(56.67) degreesValue;

?

  18.角度制轉(zhuǎn)換為弧度制

SELECT RADIANS(56.67) radiansValue;

?

  19.求符號

  SIGN() 函數(shù)用來返回一個數(shù)值的符號,如果數(shù)值大于 0 則返回 1,如果數(shù)值等于 0 則返回 0,如果數(shù)值小于 0 則返回-1。

SELECT SIGN(1 - 3) signValue1,SIGN(3 - 1) signValue2,SIGN(0) signValue3;

?

  20.求自然對數(shù)

  LOG() 函數(shù)用來計算一個數(shù)的自然對數(shù)值。

SELECT LOG(56.67) logValue;

?

  21.求以 10 為底的對數(shù)

SELECT LOG10(56.67) log10Value;

?

二、字符串函數(shù)

  1.計算字符串長度

SELECT LEN('abc');

?

  2.字符串轉(zhuǎn)換為小寫

SELECT LOWER('A');

?

  3.字符串轉(zhuǎn)換為大寫

SELECT UPPER('a');

?

  4.截去字符串左側(cè)空格

SELECT LTRIM(' a ');

?

  5.截去字符串右側(cè)空格

SELECT RTRIM(' a ');

?

  6.截去字符串兩側(cè)的空格

SELECT RTRIM(LTRIM(' a '));

?

?  7.取子字符串

  SUBSTRING(string, start_position, length)

SELECT 'abcdef',SUBSTRING('abcdef', 2, 3);

?

  8.計算子字符串的位置

SELECT CHARINDEX('ly', 'Kelly'),CHARINDEX('m', 'Smith');

?

  9.從左側(cè)開始取子字符串

  LEFT(string, length)

SELECT LEFT('abcdef', 3);

?

  10.從右側(cè)開始取子字符串

  RIGHT(string,length)

SELECT RIGHT('abcdef', 3);

?

  11.字符串替換

  REPLACE(string, string_tobe_replace, string_to_replace)

SELECT REPLACE(' abc def', ' ', '');

?

?  12.得到字符的 ASCII 碼

?  ASCII() 函數(shù)用來得到一個字符的 ASCII 碼,它有且只有一個參數(shù),這個參數(shù)為待求 ASCII 碼的字符,如果參數(shù)為一個字符串則函數(shù)返回第一個字符的 ASCII 碼。

SELECT ASCII('a'),ASCII('abc');

?

  13.得到一個 ASCII 碼數(shù)字對應(yīng)的字符

  與 ASCII() 函數(shù)正好相反,獲取得到一個字符的 ASCII 碼。

SELECT CHAR(56) char1,CHAR(90) char2,CHAR(ASCII('a')) char3;

  14.轉(zhuǎn)換為整數(shù)

SELECT CEILING(90.021) ceilingValue;

?

  15.發(fā)音匹配度

  有的時候我們并不知道一個人姓名的準(zhǔn)確拼寫,只知道它的發(fā)音,這是在公安、醫(yī)療、教育等系統(tǒng)中是經(jīng)常需要的功能。

SELECT SOUNDEX('jack') jackSoundexValue,SOUNDEX('jeck') jeckSoundexValue, SOUNDEX('joke') jockSoundexValue,SOUNDEX('juke') jukeSoundexValue,SOUNDEX('look') lookSoundexValue,SOUNDEX('jobe') jobeSoundexValue;

?

  DIFFERENCE() 用來簡化兩個字符串的發(fā)音相似度比較,它可以計算兩個字符串的發(fā)音特征值,并且比較它們,然后返回一個 0 至 4 之間的一個值來反映兩個字符串的發(fā)音相似度,這個值越大則表示兩個字符串發(fā)音思想度越大。

SELECT DIFFERENCE('Kerry', 'Merry') diffValue1,DIFFERENCE('Jim', 'Merry') diffValue2;

?

三、日期時間函數(shù)

  1.取得當(dāng)前日期時間的函數(shù) GETDATE()

SELECT GETDATE(); SELECT CONVERT(VARCHAR(50), GETDATE(), 101) AS 當(dāng)前日期,CONVERT(VARCHAR(50), GETDATE(), 108) AS 當(dāng)前時間;

?

  2.日期增減?

SELECT GETDATE(),DATEADD(YEAR, 3, GETDATE()) AS time1,DATEADD(QUARTER, 20, GETDATE()) AS time2,DATEADD(MONTH, 68, GETDATE()) AS time3,DATEADD(WEEK, -1000, GETDATE()) AS time4;

?

  3.計算日期差額

SELECT GETDATE(),DATEDIFF(YEAR, '1992-06-01 00:00:00', GETDATE()) '年份',DATEDIFF(QUARTER, '1992-06-01 00:00:00', GETDATE()) '季度',DATEDIFF(MONTH, '1992-06-01 00:00:00', GETDATE()) '月份',DATEDIFF(DAYOFYEAR, '1992-06-01 00:00:00', GETDATE()) '每年的某一日',DATEDIFF(DAY, '1992-06-01 00:00:00', GETDATE()) '日期',DATEDIFF(WEEK, '1992-06-01 00:00:00', GETDATE()) '星期',DATEDIFF(WEEKDAY, '1992-06-01 00:00:00', GETDATE()) '工作日',DATEDIFF(HOUR, '1992-06-01 00:00:00', GETDATE()) '小時',DATEDIFF(MINUTE, '1992-06-01 00:00:00', GETDATE()) '分鐘',DATEDIFF(SECOND, '1992-06-01 00:00:00', GETDATE()) '';

?

  4.計算一個日期是星期幾

SELECT GETDATE(),DATENAME(YEAR, GETDATE()) '年份',DATENAME(QUARTER, GETDATE()) '季度',DATENAME(MONTH, GETDATE()) '月份',DATENAME(DAYOFYEAR, GETDATE()) '每年的某一日',DATENAME(DAY, GETDATE()) '日期',DATENAME(WEEK, GETDATE()) '星期',DATENAME(WEEKDAY, GETDATE()) '工作日',DATENAME(HOUR, GETDATE()) '小時',DATENAME(MINUTE, GETDATE()) '分鐘',DATENAME(SECOND, GETDATE()) '',DATENAME(MILLISECOND, GETDATE()) '毫秒';

?

  5.取得日期的指定部分

  DATEPART() ?函數(shù)的返回值是數(shù)字而 DATENAME() ?函數(shù)則會將盡可能的以名稱的方式做為返回值。

SELECT GETDATE(),DATEPART(YEAR, GETDATE()) '年份',DATEPART(QUARTER, GETDATE()) '季度',DATEPART(MONTH, GETDATE()) '月份',DATEPART(DAYOFYEAR, GETDATE()) '每年的某一日',DATEPART(DAY, GETDATE()) '日期',DATEPART(WEEK, GETDATE()) '星期',DATEPART(WEEKDAY, GETDATE()) '工作日',DATEPART(HOUR, GETDATE()) '小時',DATEPART(MINUTE, GETDATE()) '分鐘',DATEPART(SECOND, GETDATE()) '',DATEPART(MILLISECOND, GETDATE()) '毫秒';

?

四、其他函數(shù)

  1.類型轉(zhuǎn)換

  CAST ( expression AS data_type)

  CONVERT ( data_type, expression)

SELECT CAST('-30' AS INT) AS v1,CONVERT(DECIMAL, '3.1415726') AS v2,CONVERT(DATETIME, '2008-08-08 08:09:10') AS v3;

?

  2.空值處理

  COALESCE ( expression, value1, value2……, valuen)

SELECT COALESCE('', GETDATE()) v1,COALESCE(NULL, GETDATE()) v2,COALESCE(NULL, '2008-08-08', GETDATE()) v3;

  NULLIF() 函數(shù)

  NULLIF ( expression1, expression2 )

DECLARE @nullIfExpression DATETIME = NULL; SELECT NULLIF('1981-03-22 00:00:00.0', GETDATE()) v1,NULLIF(GETDATE(), '1981-03-22 00:00:00.0') v2,NULLIF(@nullIfExpression, GETDATE()) v3,NULLIF(GETDATE(), @nullIfExpression) v4,NULLIF(@nullIfExpression, @nullIfExpression) v5;

?

  3.CASE 函數(shù)

  CASE expressionWHEN value1 THEN returnvalue1WHEN value2 THEN returnvalue2WHEN value3 THEN returnvalue3……ELSE defaultreturnvalueEND

  

DECLARE @caseName NVARCHAR(100) = 'TONY'; SELECT (CASE @caseNameWHEN 'TONY' THEN'Tony'WHEN 'MILI' THEN'MiLi'ELSE'Other'END) AS Name;

DECLARE @caseAge INT = 20; SELECT (CASEWHEN @caseAge > 60 THEN'老人'WHEN @caseAge > 30 THEN'中年'WHEN @caseAge >= 18 THEN'壯丁'ELSE'小屁孩'END) AS '稱謂';

?

  4.PATINDEX() 函數(shù)

SELECT 'Tom',PATINDEX('%_m%', 'Tom') UNION SELECT 'Lily',PATINDEX('%_m%', 'Lily');

?

  5.REPLICATE() 函數(shù)

SELECT 'Jim',REPLICATE('Jim', 1) UNION SELECT 'Tony',REPLICATE('Tony', 2);

?

  6.REVERSE() 字符串顛倒

SELECT 'Jim',REVERSE('Jim') UNION SELECT 'Tony',REVERSE('Tony');

?

  7.ISDATE() 函數(shù)

  ISDATE() 函數(shù)用來確定輸入表達(dá)式是否為有效日期。如果輸入表達(dá)式是有效日期,那么 ISDATE 返回 1;否則,返回 0。

  ISDATE ( expression )

SELECT ISDATE(NULL) AS d1,ISDATE('13/43/3425') AS d2,ISDATE('1995-10-1a') AS d3,ISDATE(19920808) AS d4,ISDATE('1/23/95') AS d5,ISDATE('1995-10-1') AS d6,ISDATE('19920808') AS d7,ISDATE(' Abc') AS d8;

?

  8.ISNUMERIC() 函數(shù)

  ISNUMERIC(expression) 函數(shù)用來確定表達(dá)式是否為有效的數(shù)值類型。如果輸入表達(dá)式的計算值為有效的整數(shù)、浮點數(shù)、money 或 decimal 類型時,ISNUMERIC 返回 1;否則返回 0。

SELECT ISNUMERIC(NULL) AS d1,ISNUMERIC('13/43/3425') AS d2,ISNUMERIC('30a.8') AS d3,ISNUMERIC(19920808) AS d4,ISNUMERIC('1/23/95') AS d5,ISNUMERIC('3E-3') AS d6,ISNUMERIC('19920808') AS d7,ISNUMERIC('-30.3') AS d8;

?

  9.輔助功能函數(shù)

  APP_NAME() 函數(shù) 返回當(dāng)前會話的應(yīng)用程序名稱;
  CURRENT_USER 函數(shù)(注意這個函數(shù)不能帶括號調(diào)用)返回當(dāng)前登陸用戶名;
  HOST_NAME() 函數(shù) 返回工作站名。

SELECT APP_NAME() AppName,CURRENT_USER CurrentUser,HOST_NAME() HostName,NEWID() UUID;

?

?


【參考】《程序員的SQL金典》

?

總結(jié)

以上是生活随笔為你收集整理的[SQL] 函数整理(T-SQL 版)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。