1、查詢的時候把某一個欄位的值拼接成字元串 以下是演示數據。 第一種方式:使用自定義變數 這種方法有一個好處就是,拼接出來的字元串可以賦值給變數或直接插入表中指定欄位,可以適用於存儲過程之類的。 第二種方式:轉換為 XML 格式 使用這種方式有一個缺點就是,不能直接賦值給變數或插入表,適用於查看時使 ...
1、查詢的時候把某一個欄位的值拼接成字元串
以下是演示數據。
第一種方式:使用自定義變數
DECLARE @Names NVARCHAR(128) SET @Names='' -- 需要先賦值為空字元串,不然結果會是 null SELECT @Names=@Names+S_Name+',' -- S_Name 類型為字元串類型,如果不能隱示轉換,就需要強制轉換 FROM Student SELECT @Names
這種方法有一個好處就是,拼接出來的字元串可以賦值給變數或直接插入表中指定欄位,可以適用於存儲過程之類的。
第二種方式:轉換為 XML 格式
SELECT t.S_Name + ',' FROM ( SELECT S_Name FROM Student ) t FOR XML PATH('')
使用這種方式有一個缺點就是,不能直接賦值給變數或插入表,適用於查看時使用。
如果想要使之能夠賦值給變數或插入表中,那就需要轉換一下。如下:
DECLARE @Names NVARCHAR(128) SET @Names='' SELECT @Names= ( SELECT t.S_Name + ',' FROM ( SELECT S_Name FROM Student ) t FOR XML PATH(''),TYPE ).value('.','NVARCHAR(128)') SELECT @Names
2、查詢一個欄位同時滿足多個條件的方法
舉個慄子:比如現在有一些訂單,而每一個訂單有多個產品,現在我要查出同時具有某幾個產品的訂單。
再拿學生和課程來舉例,一個學生可以選擇多門課程,而每一門課程也可以同時被多個學生所選擇,那麼我現在要查出選擇了某幾門課程的學生。
下麵是演示數據。
現在我要查出同時選擇了 C# 和 SQL 課程的學生信息。如下:
SELECT s.S_Id,s.S_No,s.S_Name FROM Student s INNER JOIN Student_Course_Relation r ON s.S_Id=r.S_Id INNER JOIN Course c ON r.C_Id=c.C_Id WHERE c.C_Name='C#' OR c.C_Name='SQL' GROUP BY s.S_Id,s.S_No,s.S_Name HAVING COUNT(1) >= '2' -- 這個數字是根據 where 條件來定