首页 > 数据库 >SQL 语句技巧--单列数据变多行数据

SQL 语句技巧--单列数据变多行数据

时间:2024-01-23 13:06:22浏览次数:30  
标签:set -- 单列 strV len num str SQL id

   碰到一个需求,将一个列的数据: “122,123,145” 或者“122,123,145,”,变成多行,表值函数如下:  

Create FUNCTION transColS
(    
    @id varchar(4000)
)
RETURNS @st TABLE (id int) 
begin
   declare @str as varchar(4000)
   IF(substring(@id,len(@id),1))<>','
     SET @id=@id+','

   set @str=@id
   declare @strV as varchar(4000)
   declare @num  int
   set @num=(len(@str)-len(replace(@str, ',', '')))/len(',')  --计算@str中有多少个“,”,用于循环
   while(@num>0)
   begin
    set @strV=substring(@str,0,charindex(',',@str))
    set @str=substring(@str,LEN(@strV)+2,LEN(@str))
    set @num=@num-1
    insert into @st(id) values(@strV)
   end
   return 
end

查询数据,即可看到数据

select ab.id,t.id from ab cross apply dbo.transColS(ab.id) t

     

结果是:
原有一列的数据:
123,124,125,126,

转化为多行的数据结果:
123
124
125
126



标签:set,--,单列,strV,len,num,str,SQL,id
From: https://blog.51cto.com/u_16532032/9376938

相关文章

  • SQL构建表层次关系,递归累加数据
     构建表的上下级关系      有一个需求,表中数据没有关系,如同一个类型的,有多个出库时间。代码--构建表的上下级关系--可以对同一个产品的,有层次关系--使用ROW_NUMBER(),来构建,最上上一级为0INSERTINTOStock([no]--编号,[quantity]......
  • 数据库系统优化--业务逻辑设计优化
         当我们优化一个系统时,有时发现一种情况就是自己修改SQL,索引以及分区是不能解决性能问题的。这时你要考虑业务逻辑优化和表设计的重构。这两点的确和设计结合的很紧密。 业务逻辑优化     结合实际,我们先谈谈业务逻辑优化。     案例一:         我......
  • SQL Server 死锁处理和优化心得
       前段时间提到的"SQLServer2005死锁解决探索",死锁严重,平均每天会发生一次死锁,在解决和处理SQLserver2005死锁中查了很多资料和想了很多办法,对为何出现死锁和怎样较少死锁有了进一步认识,在这里和大家一起分享:    SQLServer锁类型    在数据库中主要存在两种......
  • 数据库重构(一):字段合并
    刚到公司不久,才知道公司产品在性能上有问题,数据量和并发数一大,系统就很慢,需要优化。在和公司技术同事讨论某模块优化,通过sql无法优化,因为系统sql是判断5个纬度,一个用户id,一个机构id,一个岗位id,还有级别判断和是否公共。     刚到公司不久,才知道公......
  • 喝黑豆汤前后的明显变化
    网友善果聊孩子喝黑豆汤前后的明显变化  【传说】豆仔姥姥(1134846367) 2014/11/279:25:25  笑笑,你怀孕喝黑豆汤了吗?  【冒泡】笑笑(237337745)2014/11/279:57:24没,家里老人婆有点那个,所以没喝  【活跃】善果2013.12.8(1515420513) 10:21:48@笑笑你好,请允许我和您说......
  • 真正的高手,都很简单
    大家都坐过汽车,你们觉得究竟是什么汽车?是不是觉得,要解释清楚还挺难的:要由发动机提供动力,烧油或者清洁能源带动轮子转动;是由底盘构成的,有座位、有玻璃,可以用来载客拉货……先打住,我们看看高手怎么说:“汽车,不就是四个轮子和两排沙发吗?”说这句话的人,是刚刚进入汽车行业的李书福,吉利集......
  • mysql分析sql语句基础工具 -- explain
    分析sql语句explainexplain(sql语句)G;分析结果:idsql语句编号如果是连接查询,表之间是平等关系,编号相同;如果有子查询,编号递增。select——type查询类型table查询针对的表 该值可能是实际的表名或者临时表,derived表示form子查询,null表示无须查表possible_key可能用到的索引ke......
  • MySQL 8.0 的xtrabackup备份
     xtrabackup备份语句:   fname=`date+%F_%H-%M-%S`mkdir-p/mnt/dbbak/db_$fnamextrabackup--defaults-file=/etc/my.cnf-uhyb-phd-h/var/lib/mysql-S/var/lib/mysql/mysql.sock-Hlocalhost--port=3306--backup--parallel=4--target-dir=/mnt/dbbak/db_$f......
  • mysql之my.cnf详解
    值,如果该值为0,则默认值为max_binlog_size(1G);如果不为0,则max_relay_log_size则为最大的relay_log文件大小;relay-log-purge=1#是否自动清空不再需要中继日志时。默认值为1(启用)expire_logs_days=30#超过30天的binlog删除binlog_cache_size=1M#在一个事务中......
  • 幽冥问答录-白话文
    1、问:先生往年曾做过阴间的判官,对吗?答:是的,世人听到这种事,都认为怪异,可是以我看来,这种事很平常,没什么好奇怪的。2、问:这是什么时候的事情?答:是光绪庚子(1900)年间的事,当时我十九岁。3、问:所担任的的是什么职务,属谁管辖,有几个职员?答:属东岳大帝管辖,但是我一直没有见到东岳大帝,只有在判案......