Chinaunix首页 | 论坛 | 博客
  • 博客访问: 56794
  • 博文数量: 16
  • 博客积分: 125
  • 博客等级: 民兵
  • 技术积分: 205
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-04 13:05
文章分类

全部博文(16)

文章存档

2016年(2)

2015年(3)

2013年(6)

2012年(5)

我的朋友

分类: SQLServer

2015-07-30 16:31:58

说明:数据库中某一列值的内容用','隔开,想要获取逗号之间值。
例如:

点击(此处)折叠或打开

  1. declare @a varchar(50)
  2. set @a ='111,3333,445666';--逗号间的值位数不固定
  3. --截取获得第一个值
  4. select SUBSTRING(@a,0,CHARINDEX(',',@a));
  5. --截取第一个后剩余字符串
  6. select SUBSTRING(@a,CHARINDEX(',',@a)+1,LEN(@a)-LEN(SUBSTRING(@a,0,CHARINDEX(',',@a))));
  7. --截取第二个字符串
  8. select SUBSTRING(SUBSTRING(@a,CHARINDEX(',',@a)+1,LEN(@a)-LEN(SUBSTRING(@a,0,CHARINDEX(',',@a)))),0,CHARINDEX(',',SUBSTRING(@a,CHARINDEX(',',@a)+1,LEN(@a)-LEN(SUBSTRING(@a,0,CHARINDEX(',',@a))))));
  9. --截取完第三个剩余字符串
  10. select SUBSTRING(SUBSTRING(@a,CHARINDEX(',',@a)+1,LEN(@a)-LEN(SUBSTRING(@a,0,CHARINDEX(',',@a)))),CHARINDEX(',',SUBSTRING(@a,CHARINDEX(',',@a)+1,LEN(@a)-LEN(SUBSTRING(@a,0,CHARINDEX(',',@a)))))+1,LEN(SUBSTRING(@a,CHARINDEX(',',@a)+1,LEN(@a)-LEN(SUBSTRING(@a,0,CHARINDEX(',',@a)))))-LEN(SUBSTRING(SUBSTRING(@a,CHARINDEX(',',@a)+1,LEN(@a)-LEN(SUBSTRING(@a,0,CHARINDEX(',',@a)))),0,CHARINDEX(',',SUBSTRING(@a,CHARINDEX(',',@a)+1,LEN(@a)-LEN(SUBSTRING(@a,0,CHARINDEX(',',@a))))))));
主要用到的函数为:substring、charindex、len这三个。

阅读(8874) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~