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/n/133148.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
WJLNWJLN
上一篇 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

发表回复

登录后才能评论