1.RAND
SELECT RAND () ---0.302870228294199
取0-1之間的隨機小數。
2.小數取整
SELECT TOP 3 FWeight, CEILING(FWeight ),FLOOR( FWeight) FROM T_Person
參數說明:m為帶處理的數據,d為四舍五入時保留的小數位數,為負數時表示對整數進行四舍五入。
SELECT TOP 3 FWeight, ROUND(FWeight ,2), ROUND(FWeight ,-1) FROM T_Person
結果:
FWeight (無列名) (無列名)56.67 56.67 60.0036.17 36.17 40.0040.33 40.33 40.00
3.SIGN():求符號
SELECT FWeight ,SIGN( FWeight-50 )as '>50' FROM T_Person
結果:
FWeight >5056.67 1.0036.17 -1.00
4.取余:
在SQL Server中,使用百分號%來實現取余操作。
SELECT FWeight ,FWeight% 10 FROM T_Person
結果:
二、字符串函數FWeight (無列名)56.67 6.6736.17 6.1740.33 0.33
1.LEN(str):計算字符串長度。
2.去除空格
SELECT ' HELLO ' ,LEN( ' HELLO '),LEN (LTRIM( ' HELLO ')),LEN (RTRIM( LTRIM(' HELLO ' )))
結果:
(無列名) (無列名) (無列名) (無列名)HELLO 7 5 5
3.截取子串
SELECT FName ,SUBSTRING( FName,2 ,2),LEFT( FName,2 ) as l,RIGHT( FName,2 ) as r FROM T_Person
結果:
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 ', ' ','' )) --結果6,5
5.ASCII碼
SELECT ASCII ('A'), ASCII('ANY' ),CHAR( 90)--65,65,Z
6.發音匹配度 DIFFERENCE
在SQL Server中使用DIFFERENCE方法查詢兩個字符串的發音相似度。該方法計算兩個字符串的發音特征值并進行比較,然后返回一個0-4之間的整數,這個數字越大表示兩個字符串發音越相似。
例如:
SELECT FName FROM T_Person WHERE DIFFERENCE( FName,'Tony' )>2
三、日期時間函數
1.GETDATE()--當前時間
SQL Server中取得當前時間的函數GETDATE(),可以使用CONVERT函數對其格式進行處理。
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為要計算的日期,number為加減日期數,datepart可以理解為加減的單位。
例如:
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參數,startdate和enddate為相減的兩個日期。
SELECT FBirthDay ,FRegDay, DATEDIFF(YEAR ,FBirthDay, FRegDay) AS UserAge FROM T_Person
結果:
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()--計算日期名稱
DATENAME(datedepart,date):datedepart參數同DATEADD,date為要計算的目標日期。
SELECT GETDATE () AS NOW, DATENAME(YEAR ,GETDATE()) AS YEAR,DATENAME (DAY, GETDATE()) AS 日期 ,DATENAME( WEEKDAY,GETDATE ()) AS WEEKDAY,DATENAME (QUARTER, GETDATE()) AS 季度
結果:
NOW YEAR 日期 WEEKDAY 季度2014-02-17 13:57:56.127 2014 17 星期一 1
5.DATEPART()--取得日期指定部分
DATEPART(datedepart,date):datedepart參數同DATEADD,date為要計算的目標日期。該方法和DATENAME類似,不過DATEPART返回值是數字,而DATENAME盡量返回的名稱。
SELECT GETDATE () AS NOW, DATEPART(YEAR ,GETDATE()) AS YEAR,DATEPART (DAY, GETDATE()) AS 日期 ,DATEPART( WEEKDAY,GETDATE ()) AS WEEKDAY, DATEPART(QUARTER ,GETDATE()) AS 季度四、其他函數
1. 類型轉換
SELECT FIdNumber ,CAST(RIGHT( FIdNumber,4 ) AS INT), Convert(INT ,RIGHT(FIdNumber, 4))%2 FROM T_Person
結果:
FIdNumber (無列名) (無列名)123456789120 9120 0123456789121 9121 1123456789122 9122 0
2.空值處理
①COALESCE(exp,val1,val2....):參數個數不固定。如果exp為null則返回val1,如果val1為null則返回val2...以此類推。如果所有值都為null,則返回null。
例如:
SELECT FBirthDay ,FRegDay, COALESCE(FBirthDay ,FRegDay, '1900-1-1') FROM T_Person
結果:
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
結果:
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.
實例:
SELECT NULLIF (1, 1),NULLIF (1, 2),NULLIF (1,NULL) --返回NULL,1,1
3.SQL Server獨有函數
①PATINDEX()--可以使用通配符模糊查詢某字符串出現的位置,功能比CHARINDEX強大。
例如:
SELECT FName ,PATINDEX( '%_i%',FName ) FROM T_Person
結果:
②REPLICATE(str,count):將一個字符串str重復count次。
SPACE(N):將空格重復N次。
例如:
SELECT FName ,REPLICATE( FName,3 ),FNAME+ SPACE(5 )+FNAME FROM T_Person
③REVERSE(str):返回字符串的倒序。
④APP_NAME():當前應用程序名稱;HOST_NAME():返回工作站名;CURRENT_USER:返回當前登錄用戶名。
新聞熱點
疑難解答