sql 将某一列转成字符串并且去掉最后一个逗号

本文介绍了一种使用 T-SQL 在 SQL Server 中动态拼接查询字符串的方法。通过 DECLARE 和 SET 语句定义变量 @center_JZHW,并利用 STUFF 函数去除首尾不需要的字符,最终实现从 CreatedType 表中按 qudao 字段获取 pc 类型的数据并进行逗号分隔。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DECLARE @center_JZHW VARCHAR(500)
SET @center_JZHW = ( SELECT DISTINCT STUFF(
    ( SELECT ','''+ qudao+'''' FROM CreatedType WITH ( NOLOCK )
      WHERE   qtype = 'pc' ORDER BY qudao
      FOR XML PATH('')), 1,4, '') AS jzhw
    FROM   CreatedType t) 

set @center_JZHW= left(@center_JZHW,len(@center_JZHW)-1)
  select @center_JZHW
  
  

 

转载于:https://www.cnblogs.com/yangjinwang/p/6606217.html

假设我们有一个名为`table1`的表,其中有一个名为`column1`的列,存储了多行逗号拼接的字符串。现在我们需要将这些字符串拆开,获取单个元素。 以下是将逗号拼接的字符串拆开为单个元素的SQL语句: ``` SELECT TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(column1, ',', numbers.n), ',', -1)) AS element FROM table1 CROSS JOIN ( SELECT 1 + units.i + tens.i * 10 AS n FROM (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS units CROSS JOIN (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS tens ) AS numbers WHERE numbers.n <= 1 + (LENGTH(column1) - LENGTH(REPLACE(column1, ',', '')))) ``` 解释一下以上SQL语句的构成: 1. 首先,我们使用`SUBSTRING_INDEX`函数将逗号拼接的字符串拆分为单个元素,使用`CROSS JOIN`将结果与数字序列连接起来。这个数字序列用于获取每个元素的位置,这里使用了两个`SELECT`子句,分别生成0-9的数字序列,并通过`CROSS JOIN`组合在一起,生成0-99的数字序列。 2. 接着,我们使用`WHERE`子句来限制`numbers.n`的范围,保证我们只获取存在的元素。具体来说,我们使用`LENGTH`函数计算逗号拼接的字符串逗号的个数,然后使用`SUBSTRING_INDEX`函数获取第`n`个元素的位置,最后使用`TRIM`函数去除元素两侧的空格,得到最终结果。 注意:以上SQL语句仅适用于MySQL数据库。如果使用其他数据库,可能需要做一些修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值