sqlserver 分段截取字符串

原创 2013年12月02日 17:01:41

问题:最近在项目上碰到一个关于清单排序的问题,系统根据清单编号进行排序,而数据库保存的清单编号是字符串类型,当碰到清单编号为207-1,207-10,207-2这种情况时,页面排序顺序就为 207-1,207-10,207-2;正确的顺序应该是 207-1,207-2,207-10。

考虑到表中清单编号有一二三四级不同的结构,所以要对清单的结构进行判断,然后分段截取字符串。

在网上搜了很多都是关于固定结构的字符串截取方式,所以将自己写的条件判断截取贴出来,有待改进之处还请多指教。(第一次发技术贴)

 

select charindex('-',ipqb_code), ipqb_code 
--截取第一层(判断是否存在字符'-'。存在,取字符'-'左边的字符串,不存在,取整个字符串)
,case when charindex('-',ipqb_code) > 0 then left(ipqb_code,CHARINDEX('-',ipqb_code)-1) else ipqb_code end ipqb_code1
--截取第二层(判断是否存在字符'-',存在,将第一个字符'-'及其左边的字符用空字符串替换,再判断替换后的字符串是否包含'-',包含,则取替换后的字符串中字符'-'左边的字符串,否则,反转然后取字符'-'右边的字符串;else取'0')
,case when charindex('-',ipqb_code) > 0 
      then 
	case when charindex('-',stuff(ipqb_code,1,charindex('-',ipqb_code),'')) > 0
	     then left(stuff(ipqb_code,1,charindex('-',ipqb_code),''),charindex('-',stuff(ipqb_code,1,charindex('-',ipqb_code),''))-1)
	     else right(ipqb_code,CHARINDEX('-',reverse(ipqb_code))-1)
	end
      else '0' 
end ipqb_code2
--截取第三层(与第二层逻辑一样,只是多包一层)
,case when charindex('-',ipqb_code) > 0 
      then
	case when charindex('-',stuff(ipqb_code,1,charindex('-',ipqb_code),'')) > 0
	     then
		case when charindex('-',stuff(stuff(ipqb_code,1,charindex('-',ipqb_code),''),1,charindex('-',stuff(ipqb_code,1,charindex('-',ipqb_code),'')),'')) > 0
		     then left(stuff(stuff(ipqb_code,1,charindex('-',ipqb_code),''),1,charindex('-',stuff(ipqb_code,1,charindex('-',ipqb_code),'')),''),charindex('-',stuff(stuff(ipqb_code,1,charindex('-',ipqb_code),''),1,charindex('-',stuff(ipqb_code,1,charindex('-',ipqb_code),'')),'')) - 1)
		     else right(ipqb_code,CHARINDEX('-',reverse(ipqb_code))-1)
		end
	     else '0'
	end
      else '0'
end ipqb_code3
from bill


 

相关文章推荐

SQL Server中截取字符串常用函数

SQL Server 中截取字符串常用的函数: 1.LEFT ( character_expression , integer_expression ) 函数说明:LEFT ( '源字符串' , '...

SQLServer中使用SUBSTRING截取字符串

SUBSTRING 返回字符、binary、text      或      image      表达式的一部分。有关可与该函数一起使用的有效      Microsoft®      SQL   ...

Microsoft SQL Server 自定义函数整理大全

SQL SERVER中是允许有自定义函数,Microsoft SQL Server 并不将用户限制在定义为 Transact-SQL 语言一部分的内置函数上,而是允许用户创建自己的用户定义函数。 函数...

SQL SERVER 正则匹配实例分享--【叶子】

--==================================== --标题: 应用实例之SQL SERVER 正则匹配 --作者:maco_wang --时间:2012-03-25 --说...

分段显示一组字符串

  • 2015年07月11日 13:52
  • 58KB
  • 下载

SQLServer中使用SUBSTRING截取字符串

SUBSTRING  返回字符、binary、text      或      image      表达式的一部分。有关可与该函数一起使用的有效      Microsoft®      ...
  • F7ANTY
  • F7ANTY
  • 2013年12月01日 21:10
  • 1164

SQLServer数据库,字符串检索、截取

例如:将字符串 ”Ws_wang@sohu.com ”和  “123@sina.com ”;通过SQL语句查询截取字符串以后得到ws_wang和123  select   left( 'Ws_wang...
  • ahwr24
  • ahwr24
  • 2011年07月04日 22:45
  • 956

SQLServer时间分段查询

统计连续时间段数据

关于TextView分段截取并响应点击(或者将字符串集合拼接在在一个Textview中并分段响应)

最近公司一个项目,要求章节目录以 / 分割,显示在一个textview内,然后点击某个章节可以响应跳转事件,直接上代码了,都有注释的 我都只上关键代码 1.java代码 private List ti...

Android使用SpannableString进行字符串的分段处理

Android使用SpannableString进行字符串的分段处理最近进行Android项目开发的时候遇到了一个情景: 这是一个单选按钮后面跟一句选项描述。大家能看到,这段文字前面部分是黑色文...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sqlserver 分段截取字符串
举报原因:
原因补充:

(最多只允许输入30个字)