SQL Server 轉型

轉型的應用,依註解說明:


USE 中文北風
GO

--基本的轉型應用---------------------------------------

SELECT CAST('2014/12/25'-GETDATE() AS INT)
SELECT CONVERT(INT,'2014/12/25'-GETDATE())
SELECT DATEPART(YEAR,'2004-05-10')
SELECT DATEDIFF(DAY,GETDATE(),'2014-12-25')

--要3個月後交貨---------------------------------------
SELECT 訂單號碼,訂單日期
 ,訂單日期+90 AS 交貨日 --直接+90天會有點怪怪的
 ,DATEADD(MONTH,3,訂單日期) AS 交貨日2 --按月加3
FROM 訂貨主檔


--DATEPART(單位,日期)
--DATEADD(單位, 數量, 日期)
--DATEDIFF(單位, 較早日期, 較晚日期)
--CAST(資料 AS 目標型別)
--CONVERT(目標型別, 資料 [, 參數])

-----------------------------------------------------


SELECT '哭哭'+'笑笑'
SELECT '哭哭'+CONVERT(NCHAR,100)

--SELECT '('+CAST(員工編號 AS NVARCHAR)+')'+姓名+職稱+' : '+CONVERT(NVARCHAR,薪資)
SELECT CONCAT('(',員工編號,')',姓名,職稱,' : ',薪資)
FROM 員工

--SELECT 姓名+ISNULL(電話號碼,' 沒電話')
SELECT CONCAT(姓名,電話號碼)
FROM 員工

SELECT NULLIF(100,200)--2者不同,回傳第1值
SELECT NULLIF(100,100)--2者相同,回傳NULL
SELECT IIF(80>60,'及格','不及格')--IIF(條件,正的敘述,負的敘述)

SELECT COALESCE(NULL,NULL,NULL,NULL,NULL,100,NULL)
SELECT COALESCE(NULL,NULL,NULL,NULL,NULL,NULL)
--找出所有函數中,第一個不是null的值


----COALESCE的應用例子-------------------------------------------------

CREATE TABLE #新員工表
(
  員工編號 INT IDENTITY(1,1) PRIMARY KEY,
  姓名 NVARCHAR(10),
  員工種類 TINYINT,
  薪資 MONEY,
  時薪 MONEY,
  工作時數 MONEY,
  銷售金額 MONEY,
  傭金比率 MONEY
)
GO
INSERT INTO #新員工表 VALUES('王小明',1,35000,NULL,NULL,NULL,NULL)
INSERT INTO #新員工表 VALUES('李小明',2,28000,NULL,NULL,NULL,NULL)
INSERT INTO #新員工表 VALUES('林大雄',2,NULL,110,275,NULL,NULL)
INSERT INTO #新員工表 VALUES('廖小美',2,NULL,125,346,NULL,NULL)
INSERT INTO #新員工表 VALUES('林美麗',2,NULL,105,758,NULL,NULL)
INSERT INTO #新員工表 VALUES('錢夫人',3,NULL,NULL,NULL,7567632,0.1)
INSERT INTO #新員工表 VALUES('ㄚ土伯',3,NULL,NULL,NULL,543243,0.08)
INSERT INTO #新員工表 VALUES('忍太郎',3,NULL,NULL,NULL,357654,0.12)
GO

SELECT * FROM #新員工表
SELECT 員工編號,姓名,
 COALESCE(薪資*15,時薪*工作時數,銷售金額*傭金比率) AS 年度給付
FROM #新員工表
----COALESCE的應用例子-------------------------------------------------


SELECT 員工編號,姓名,
  CONVERT(VARCHAR,雇用日期,3) AS 雇用日,
  CONVERT(VARCHAR,CAST(薪資 AS MONEY),1) AS 薪水
FROM 員工

SELECT 員工編號,姓名,
  FORMAT(雇用日期,'yyyy/MM/dd dddd','ja-JP') AS 請工日期,
  FORMAT(薪資,'C','ja-JP') AS 薪水
FROM 員工


--CONCAT(值1,值2,...)
--FORMAT(資料,格式 [,語系])
--IIF(邏輯判斷,正確執行敘述,不正確執行敘述)
--ISNULL(資料,取代值)
--NULLIF(值1,值2)
--COALESCE(值1,值2,...)



留言

熱門文章