USE master; --5.2 字元串函數 --1.計算字元串長度 SELECT LEN('abc'); --2.字元串轉換為小寫 SELECT 'A', LOWER('a'); --3.字元串轉換為大寫 SELECT 'a', UPPER('a'); --4.截去字元串左側空格 SELECT ... ...
USE master; --5.2 字元串函數 --1.計算字元串長度 SELECT LEN('abc'); --2.字元串轉換為小寫 SELECT 'A', LOWER('a'); --3.字元串轉換為大寫 SELECT 'a', UPPER('a'); --4.截去字元串左側空格 SELECT ' a ', LTRIM(' a '); --5.截去字元串右側空格 SELECT ' a ', RTRIM(' a '); --6.截去字元串兩側的空格 SELECT ' a ', RTRIM(LTRIM(' a ')); --7.取子字元串 SELECT 'abcdef', SUBSTRING('abcdef', 2, 3); --8.計運算元字元串的位置 SELECT 'abcdef', CHARINDEX('abcdef', 'abcdef'); --9.從左側開始取子字元串 SELECT 'abcdef', LEFT('abcdef', 3); --10.從右側開始取子字元串 SELECT 'abcdef', RIGHT('abcdef', 3); --11.字元串替換 SELECT REPLACE(' abc def', ' ', ''); --12.得到字元的 ASCII 碼 SELECT ASCII('a'), ASCII('abc'); --13.得到一個 ASCII 碼數字對應的字元 SELECT CHAR(56), CHAR(90), CHAR(ASCII('a')); --轉換為整數 SELECT CEILING(90.021); --14.發音匹配度 SELECT SOUNDEX('jack'), SOUNDEX('jeck'), SOUNDEX('joke'), SOUNDEX('juke'), SOUNDEX('look'), SOUNDEX('jobe'); SELECT DIFFERENCE('Kerry', 'Merry'); --5.3 日期時間函數 --1.取得當前日期時間的函數為 GETDATE() SELECT GETDATE(); SELECT CONVERT(VARCHAR(50), GETDATE(), 101) AS 當前日期, CONVERT(VARCHAR(50), GETDATE(), 108) AS 當前時間; --日期增減 SELECT GETDATE(), DATEADD(YEAR, 3, GETDATE()) AS threeyrs, DATEADD(QUARTER, 20, GETDATE()) AS ttqutrs, DATEADD(MONTH, 68, GETDATE()) AS sxtmonths, DATEADD(WEEK, -1000, GETDATE()) AS thweeik; --計算日期差額 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()) '秒'; -- 5.3.6 計算一個日期是星期幾 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.3.7 取得日期的指定部分 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()) '毫秒'; -- DATEPART() 函數的返回值是數字而 DATENAME() 函數則會將儘可能的以名稱的方式做為返回值 -- 5.4 其他函數 -- 5.4.1 類型轉換 --CAST ( expression AS data_type) --CONVERT ( data_type, expression) SELECT CAST('-30' AS INT) as i, CONVERT(DECIMAL,'3.1415726') as d, CONVERT(DATETIME,'2008-08-08 08:09:10') as dt -- 5.4.2 空值處理 -- 5.4.2.1 COALESCE()函數 -- COALESCE ( expression,value1,value2……,valuen) SELECT COALESCE('', GETDATE()), COALESCE(NULL, GETDATE()), COALESCE(NULL, '2008-08-08',GETDATE())