sqlserver拆分逗號詳解

一、sqlserver逗號行轉列

要將一列中包含逗號的數據進行行轉列,可以使用sqlserver內置函數pivot。假設有以下數據:

NAME    FRUIT
A       Apple,Banana
B       Orange,Strawberry
C       Grapes

將FRUIT列進行行轉列,可以這樣寫:

SELECT NAME, [1] AS FRUIT1, [2] AS FRUIT2
FROM(
SELECT NAME, VALUE, ROW_NUMBER() OVER(PARTITION BY NAME ORDER BY (SELECT NULL)) AS RN
FROM TABLENAME
CROSS APPLY STRING_SPLIT(FRUIT, ',')
) SRC
PIVOT(MAX(VALUE)) FOR RN IN([1], [2])) P

結果如下:

NAME   FRUIT1   FRUIT2
A      Apple    Banana
B      Orange   Strawberry
C      Grapes   NULL

二、sqlserver逗號分割

有時候需要將一列中包含逗號分割的字元串進行解析成多行數據。可以使用sqlserver的內置函數STRING_SPLIT。假設有以下數據:

ID    DATA
1     A,B,C
2     D,E,F

將DATA列進行逗號分割,可以這樣寫:

SELECT ID, VALUE
FROM TABLENAME
CROSS APPLY STRING_SPLIT(DATA, ',')

結果如下:

ID    VALUE
1     A
1     B
1     C
2     D
2     E
2     F

三、sqlserver行轉列用逗號隔開

有時候需要將一列中的多行數據轉換成一行並用逗號隔開。可以使用sqlserver的內置函數STUFF和FOR XML PATH。假設有以下數據:

ID    TYPE
1     A
1     B
1     C
2     D
2     E
2     F

將TYPE列進行行轉列用逗號隔開,可以這樣寫:

SELECT ID, STUFF((SELECT ',' + TYPE
                  FROM TABLENAME
                  WHERE ID = T.ID
                  FOR XML PATH ('')), 1, 1, '') AS TYPES
FROM TABLENAME T
GROUP BY ID

結果如下:

ID    TYPES
1     A,B,C
2     D,E,F

四、sqlserver逗號拼接字元串

有時候需要將多行數據拼接成一行並用逗號隔開。可以使用sqlserver的內置函數STUFF和FOR XML PATH。假設有以下數據:

ID    TYPE
1     A
1     B
1     C
2     D
2     E
2     F

將TYPE列進行逗號拼接,可以這樣寫:

SELECT STUFF((SELECT ',' + TYPE
              FROM TABLENAME
              FOR XML PATH('')), 1, 1, '') AS TYPES

結果如下:

TYPES
A,B,C,D,E,F

五、sqlserver將一列按逗號拆分多列

有時候需要將一列中包含逗號的數據進行拆分成多列。可以使用sqlserver的內置函數PARSENAME。假設有以下數據:

NAME    FRUIT
A       Apple,Banana
B       Orange,Strawberry
C       Grapes

將FRUIT列按逗號拆分成多列,可以這樣寫:

SELECT NAME, PARSENAME(REPLACE(FRUIT, ',', '.'), 2) AS FRUIT1, PARSENAME(REPLACE(FRUIT, ',', '.'), 1) AS FRUIT2
FROM TABLENAME

結果如下:

NAME   FRUIT1   FRUIT2
A      Banana   Apple
B      Strawberry   Orange
C      NULL   Grapes

六、sqlserver一條記錄拆分多條

有時候需要將一條記錄中包含逗號的數據進行拆分成多條。可以使用sqlserver的內置函數STRING_SPLIT。假設有以下數據:

ID    NAME    FRUIT
1     A       Apple,Banana
2     B       Orange,Strawberry
3     C       Grapes

將FRUIT列按逗號拆分成多條,可以這樣寫:

SELECT ID, NAME, VALUE AS FRUIT
FROM TABLENAME
CROSS APPLY STRING_SPLIT(FRUIT, ',')

結果如下:

ID    NAME    FRUIT
1     A       Apple
1     A       Banana
2     B       Orange
2     B       Strawberry
3     C       Grapes

七、sqlserver實現分頁查詢

當數據量較大時,需要進行分頁查詢。可以使用sqlserver的內置函數ROW_NUMBER() OVER()。假設有以下數據:

ID    NAME
1     A
2     B
3     C
4     D
5     E
6     F
7     G
8     H
9     I
10    J

使用ROW_NUMBER() OVER()實現分頁查詢,可以這樣寫:

DECLARE @pageSize INT = 5 --每頁顯示條數
DECLARE @pageNum INT = 2 --當前頁數
SELECT ID, NAME
FROM(
SELECT ROW_NUMBER() OVER(ORDER BY ID) AS RowNum, ID, NAME
FROM TABLENAME
) T
WHERE T.RowNum > (@pageNum - 1) * @pageSize AND T.RowNum <= @pageNum * @pageSize

結果如下:

ID    NAME
6     F
7     G
8     H
9     I
10    J

八、sqlserver分組查詢

有時候需要對數據進行分組查詢。可以使用sqlserver的內置函數GROUP BY。假設有以下數據:

ID    NAME    AGE
1     A       20
2     B       18
3     C       20
4     D       21
5     E       18
6     F       22
7     G       20
8     H       21
9     I       20
10    J       22

使用GROUP BY實現年齡分組查詢,可以這樣寫:

SELECT AGE, COUNT(*) AS COUNT
FROM TABLENAME
GROUP BY AGE

結果如下:

AGE   COUNT
18    2
20    4
21    2
22    2

九、sqlserver加序號

有時候需要對數據進行加序號操作。可以使用sqlserver的內置函數ROW_NUMBER() OVER()。假設有以下數據:

NAME    AGE
A       20
B       18
C       20
D       21
E       18
F       22
G       20
H       21
I       20
J       22

使用ROW_NUMBER() OVER()實現加序號操作,可以這樣寫:

SELECT ROW_NUMBER() OVER(ORDER BY NAME) AS RowNum, NAME, AGE
FROM TABLENAME

結果如下:

RowNum   NAME   AGE
1        A      20
2        B      18
3        C      20
4        D      21
5        E      18
6        F      22
7        G      20
8        H      21
9        I      20
10       J      22

原創文章,作者:WJLN,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/133148.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
WJLN的頭像WJLN
上一篇 2024-10-03 23:56
下一篇 2024-10-03 23:57

相關推薦

  • Python中逗號算字元嗎

    Python中逗號既可以作為分隔符,也可以作為一個表達式中的運算符。關於逗號作為分隔符是不會被算作字元的事情,這點大家都知道。本文主要就是闡述逗號作為運算符在表達式中是會被算作字元…

    編程 2025-04-28
  • Python輸出逗號分隔且最後沒逗號

    本文將從多個方面詳細闡述如何使用Python進行逗號分隔輸出並且確保最後沒有逗號。 一、字元串Join方法 字元串Join方法是Python中常用的一種實現逗號分隔輸出的方式,同時…

    編程 2025-04-27
  • Python編寫字元串最後一個字元沒有逗號

    針對這個問題,我們可以通過Python內置函數或字元串切片來解決。接下來,我們將逐步從多個方面來講解具體的解決方法。 一、使用內置函數rstrip()和slice Python提供…

    編程 2025-04-27
  • Python中以逗號為分隔符進行換行

    Python是一種被廣泛運用的高級編程語言,其靈活性和可擴展性使其成為了眾多程序員的首選語言,也吸引了越來越多的新手程序員加入。在Python中,以逗號為分隔符進行換行是一個常見的…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25
  • 神經網路代碼詳解

    神經網路作為一種人工智慧技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網路的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網路模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分散式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25

發表回復

登錄後才能評論