国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

讀《程序員的SQL金典》[2]--函數(shù)

2024-07-21 02:50:51
字體:
供稿:網(wǎng)友
讀《程序員的SQL金典》[2]--函數(shù)一、數(shù)學(xué)函數(shù)

1.RAND

SELECT RAND () ---0.302870228294199

取0-1之間的隨機(jī)小數(shù)。

2.小數(shù)取整

  • CEILINT(data)舍掉小數(shù)部分并向上取整。
  • FLOOR(data)舍掉小數(shù)部分并向下取整。
SELECT TOP 3 FWeight, CEILING(FWeight ),FLOOR( FWeight) FROM T_Person
  • Round(m,d):四舍五入對小數(shù)進(jìn)行取整。

參數(shù)說明:m為帶處理的數(shù)據(jù),d為四舍五入時(shí)保留的小數(shù)位數(shù),為負(fù)數(shù)時(shí)表示對整數(shù)進(jìn)行四舍五入。

SELECT TOP 3 FWeight, ROUND(FWeight ,2), ROUND(FWeight ,-1) FROM T_Person

結(jié)果:

FWeight (無列名) (無列名)56.67 56.67 60.0036.17 36.17 40.0040.33 40.33 40.00

3.SIGN():求符號(hào)

SELECT FWeight ,SIGN( FWeight-50 )as '>50' FROM T_Person

結(jié)果:

FWeight >5056.67 1.0036.17 -1.00

4.取余:

在SQL Server中,使用百分號(hào)%來實(shí)現(xiàn)取余操作。

SELECT FWeight ,FWeight% 10 FROM T_Person

結(jié)果:

FWeight (無列名)56.67 6.6736.17 6.1740.33 0.33

二、字符串函數(shù)

1.LEN(str):計(jì)算字符串長度。

2.去除空格

  • LTRIM(str):去掉字符串左側(cè)空格。
  • RTRIM(str):去掉字符串右側(cè)空格。
SELECT ' HELLO ' ,LEN( '  HELLO  '),LEN (LTRIM( '  HELLO  ')),LEN (RTRIM( LTRIM('  HELLO  ' )))

結(jié)果:

(無列名) (無列名) (無列名) (無列名)HELLO 7 5 5

3.截取子串

  • SUBSTRING(str,start,length):取子字符串。其中start從1開始計(jì)算,length為子串長度。
  • LEFT(str,length):從最左側(cè)開始截取子串。
  • RIGHT(str,length):從最右側(cè)開始截取子串。
SELECT FName ,SUBSTRING( FName,2 ,2),LEFT( FName,2 ) as l,RIGHT( FName,2 ) as r FROM T_Person

結(jié)果:

FName (無列名) l rLily il Li lyKelly el Ke lySam am Sa am

4.字符串替換

REPLACE(str,old,new):str為要替換的原字符串,old為要被替換的字符串部分,new是用來替換的新字符串。

SELECT LEN (' HELLO '), LEN(REPLACE (' HELLO ', ' ','' )) --結(jié)果6,5

5.ASCII碼

  • ASCII(char)計(jì)算字符的ASCII碼,如果參數(shù)是一個(gè)字符串,則返回第一個(gè)字母的ASCII碼。
  • CHAR(num)正好相反,是根據(jù)ASCII碼數(shù)值計(jì)算對應(yīng)的字符。
SELECT ASCII ('A'), ASCII('ANY' ),CHAR( 90)--65,65,Z

6.發(fā)音匹配度 DIFFERENCE

在SQL Server中使用DIFFERENCE方法查詢兩個(gè)字符串的發(fā)音相似度。該方法計(jì)算兩個(gè)字符串的發(fā)音特征值并進(jìn)行比較,然后返回一個(gè)0-4之間的整數(shù),這個(gè)數(shù)字越大表示兩個(gè)字符串發(fā)音越相似。

例如:

SELECT FName FROM T_Person WHERE DIFFERENCE( FName,'Tony' )>2

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

1.GETDATE()--當(dāng)前時(shí)間

SQL Server中取得當(dāng)前時(shí)間的函數(shù)GETDATE(),可以使用CONVERT函數(shù)對其格式進(jìn)行處理。

SELECT GETDATE () --2014-02-17 12:44:39.933 SELECT CONVERT (VARCHAR( 50),GETDATE (),101) AS NOWDATE --02/17/2014 SELECT CONVERT (VARCHAR( 50),GETDATE (),108) AS NOWDATE --12:44:39

2.DATEADD()--日期增減

DATEADD(datepart,number,date):date為要計(jì)算的日期,number為加減日期數(shù),datepart可以理解為加減的單位。

Image

例如:

SELECT FBirthDay ,DATEADD( YEAR,1 ,FBirthDay) FROM T_Person SELECT FBirthDay ,DATEADD( QUARTER,2 ,FBirthDay) FROM T_Person SELECT FBirthDay ,DATEADD( WEEK,-2 ,FBirthDay) FROM T_Person

3.DATEDIFF()--日期差額

DATEDIFF(datedepart,startdate,enddate):其中datedepart含義同DATEADD參數(shù),startdate和enddate為相減的兩個(gè)日期。

SELECT FBirthDay ,FRegDay, DATEDIFF(YEAR ,FBirthDay, FRegDay) AS UserAge FROM T_Person

結(jié)果:

FBirthDay FRegDay UserAge1981-03-22 00:00:00.000 1998-05-01 00:00:00.000 171987-01-18 00:00:00.000 1999-08-21 00:00:00.000 121987-11-08 00:00:00.000 2001-09-18 00:00:00.000 14

4.DATENAME()--計(jì)算日期名稱

DATENAME(datedepart,date):datedepart參數(shù)同DATEADD,date為要計(jì)算的目標(biāo)日期。

SELECT GETDATE () AS NOW, DATENAME(YEAR ,GETDATE()) AS YEAR,DATENAME (DAY, GETDATE()) AS 日期 ,DATENAME( WEEKDAY,GETDATE ()) AS WEEKDAY,DATENAME (QUARTER, GETDATE()) AS 季度

結(jié)果:

NOW YEAR 日期 WEEKDAY 季度2014-02-17 13:57:56.127 2014 17 星期一 1

5.DATEPART()--取得日期指定部分

DATEPART(datedepart,date):datedepart參數(shù)同DATEADD,date為要計(jì)算的目標(biāo)日期。該方法和DATENAME類似,不過DATEPART返回值是數(shù)字,而DATENAME盡量返回的名稱。

SELECT GETDATE () AS NOW, DATEPART(YEAR ,GETDATE()) AS YEAR,DATEPART (DAY, GETDATE()) AS 日期 ,DATEPART( WEEKDAY,GETDATE ()) AS WEEKDAY, DATEPART(QUARTER ,GETDATE()) AS 季度
四、其他函數(shù)

1. 類型轉(zhuǎn)換

  • CAST(exp AS datetype)
  • CONVERT(datetype,exp)
SELECT FIdNumber ,CAST(RIGHT( FIdNumber,4 ) AS INT), Convert(INT ,RIGHT(FIdNumber, 4))%2 FROM T_Person

結(jié)果:

FIdNumber (無列名) (無列名)123456789120 9120 0123456789121 9121 1123456789122 9122 0

2.空值處理

①COALESCE(exp,val1,val2....):參數(shù)個(gè)數(shù)不固定。如果exp為null則返回val1,如果val1為null則返回val2...以此類推。如果所有值都為null,則返回null。

例如:

SELECT FBirthDay ,FRegDay, COALESCE(FBirthDay ,FRegDay, '1900-1-1') FROM T_Person

結(jié)果:

FBirthDay FRegDay (無列名)1982-07-12 00:00:00.000 2000-03-01 00:00:00.000 1982-07-12 00:00:00.0001983-02-16 00:00:00.000 1998-05-01 00:00:00.000 1983-02-16 00:00:00.000NULL 1999-03-01 00:00:00.000 1999-03-01 00:00:00.000NULL NULL 1900-01-01 00:00:00.0001972-07-18 00:00:00.000 1995-06-19 00:00:00.000 1972-07-18 00:00:00.000

②ISNULL(exp1,exp2):如果exp1值為NULL,則返回exp2.

例如:

SELECT FBirthDay ,FRegDay, ISNULL(FBirthDay ,FRegDay) FROM T_Person

結(jié)果:

FBirthDay FRegDay (無列名)1982-07-12 00:00:00.000 2000-03-01 00:00:00.000 1982-07-12 00:00:00.0001983-02-16 00:00:00.000 1998-05-01 00:00:00.000 1983-02-16 00:00:00.000NULL 1999-03-01 00:00:00.000 1999-03-01 00:00:00.000NULL NULL NULL1972-07-18 00:00:00.000 1995-06-19 00:00:00.000 1972-07-18 00:00:00.000

③NULLIF(exp1,exp2):

如果exp1等于exp2,則返回NULL;否則返回exp1.

實(shí)例:

SELECT NULLIF (1, 1),NULLIF (1, 2),NULLIF (1,NULL)  --返回NULL,1,1

3.SQL Server獨(dú)有函數(shù)

①PATINDEX()--可以使用通配符模糊查詢某字符串出現(xiàn)的位置,功能比CHARINDEX強(qiáng)大。

例如:

SELECT FName ,PATINDEX( '%_i%',FName ) FROM T_Person

結(jié)果:

Image(1)

②REPLICATE(str,count):將一個(gè)字符串str重復(fù)count次。

SPACE(N):將空格重復(fù)N次。

例如:

SELECT FName ,REPLICATE( FName,3 ),FNAME+ SPACE(5 )+FNAME FROM T_Person

Image(2)

③REVERSE(str):返回字符串的倒序。

④APP_NAME():當(dāng)前應(yīng)用程序名稱;HOST_NAME():返回工作站名;CURRENT_USER:返回當(dāng)前登錄用戶名。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 策勒县| 伊金霍洛旗| 北流市| 陇川县| 沙洋县| 宁阳县| 衡阳县| 卢湾区| 泸西县| 三河市| 延长县| 科技| 喀喇| 巩留县| 许昌市| 玛沁县| 日土县| 绵阳市| 天门市| 广安市| 永嘉县| 新竹县| 汉源县| 枣强县| 于都县| 大厂| 义马市| 吐鲁番市| 绍兴市| 平舆县| 株洲县| 临漳县| 延寿县| 蛟河市| 宁津县| 长子县| 昌宁县| 定陶县| 花垣县| 阆中市| 澎湖县|