SQL Server 語法


有點像Switch的語法:
CASE WHEN ... THEN ....END





USE 中文北風
GO 
--把所有小姐、先生稱呼改為 母 公------------------------
SELECT 員工編號,姓名,'母' AS 性別
FROM 員工
WHERE 稱呼 = '小姐'
UNION ALL
SELECT 員工編號,姓名,'公' AS 性別
FROM 員工
WHERE 稱呼 = '先生'
ORDER BY 員工編號

--↓↓------------------------------------------------
--SQL2012 IIF的語法----------------------------------
SELECT 員工編號,姓名,IIF(稱呼='先生','公','母') AS 性別
FROM 員工

--↓↓------------------------------------------------
--可以用CASE WHEN ... THEN ... END 語法--------------
SELECT 員工編號,姓名,
 CASE 稱呼
  WHEN '先生' THEN '公'
  WHEN '小姐' THEN '母'
 END AS 性別
FROM 員工


--另外:CASE 可以用條件判斷----------------------------
SELECT 產品編號,品名,
 CASE 
  WHEN 價錢 >=100 THEN '高價位'
  WHEN 價錢 >=50 THEN '高價位'
  WHEN 價錢 >=20 THEN '低價位'
  ELSE '超便宜'
 END AS 價錢分布
FROM 巨巨



接著是if語法跟while迴圈語法
在SQL Server沒有大括號包住,一律用
BEGIN ... END

另外也沒有for、foreach之類的,只有while


-----------------------------------------------------
USE 練練
GO 
DECLARE @price MONEY
SELECT @price=價錢 FROM 巨巨 WHERE 產品編號 = 10 

--SQL Server的if語法-------------------------------
IF @price > 50
 BEGIN
  PRINT @price   
  PRINT '好貴喔'
 END
ELSE
 BEGIN
  PRINT @price   
  PRINT '好便宜喔'
 END

--SQL Server的迴圈語法(只有while)--------------------
USE 練練
GO 
DECLARE @price MONEY
DECLARE @name VARCHAR(10)
DECLARE @id INT
DECLARE @count INT
SET @id =1
SELECT @count=COUNT(*) FROM 巨巨

WHILE @id <=@count
 BEGIN
  SELECT @id=產品編號,@name =品名,@price=價錢
   FROM 巨巨 WHERE 產品編號 = @id
  PRINT CONCAT(@id,' ',@name,' ',@price)
  SET @id = @id+1
 END

--等同:SELECT 產品編號,品名,價錢 FROM 巨巨-----------

留言

熱門文章