请教 sql2005中字段的内容如何提取

linhua51 2011-08-15 08:37:43

查询出来这个字段,现在想提取字段中的“增加项目:”后面的项目名称,如"妇科检查"、"内科"、"外科"等这些内容。还有提取内科、外科、妇科检查前面[]中的这些编号。那位高手帮忙小弟一下,非常感谢。
...全文
79 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
linhua51 2011-08-15
  • 打赏
  • 举报
回复

“删除项目:”后面的项目名称,如"人体成份分析"等这些内容。还有提取"人体成份分析"前面[]中的这些编号。小弟对substring ,charindex 不是很清楚,删除项目后面没有支付方式了,请高手帮忙一下。
chtzhking 2011-08-15
  • 打赏
  • 举报
回复

declare @tb table (c_name varchar(1000))
insert into @tb(c_name)
select '单位:检次:0 分组:体检人员:[180143]某某某 增加项目:[0911]妇科检查 支付方式:个人支付' union all
select '单位:检次:0 分组:体检人员:[180143]某某某 增加项目:[3203]白带常规 支付方式:个人支付' union all
select '单位:检次:0 分组:体检人员:[180143]某某某 增加项目:[0201]内科 支付方式:个人支付' union all
select '单位:检次:0 分组:体检人员:[180143]某某某 增加项目:[0301]外科 支付方式:个人支付' union all
select '单位:检次:0 分组:体检人员:[180143]某某某 增加项目:[0607]肝功能十二项 支付方式:个人支付' union all
select '单位:检次:0 分组:体检人员:[180143]某某某 增加项目:[2343]双入彩超(含图文) 支付方式:个人支付' union all
select '单位:检次:0 分组:体检人员:[180143]某某某 增加项目:[2341]甲状腺彩超(含图文) 支付方式:个人支付' union all
select '单位:检次:0 分组:体检人员:[180143]某某某 增加项目:[0304]女外科 支付方式:个人支付' union all
select '单位:检次:0 分组:体检人员:[180143]某某某 增加项目:[0205]女内科 支付方式:个人支付'


select substring(a.name,charindex('[',a.name)+1,charindex(']',a.name)-charindex('[',a.name)-1) as 编号
, substring(a.name,charindex(']',a.name)+1,LEN(a.name)) as 编号
from (
select c_name,
substring(c_name,charindex('增加项目',c_name)+4,charindex('支付方式',c_name)-charindex('增加项目',c_name)-4) as name
from @tb
where charindex('增加项目',c_name)>0 and charindex('支付方式',c_name)>0
)as a
---------------------------------------------
编号 项目
----------- -----------
0911 妇科检查
3203 白带常规
0201 内科
0301 外科
0607 肝功能十二项
2343 双入彩超(含图文)
2341 甲状腺彩超(含图文)
0304 女外科
0205 女内科

(9 行受影响)
gogodiy 2011-08-15
  • 打赏
  • 举报
回复

declare @a varchar(1000)='体检项目:全身 体检人员:108954 增加项目:[0911]内科 支付方式:个人支付'
select SUBSTRING(@a,CHARINDEX('增加项目',@a),CHARINDEX(' ',@a,CHARINDEX('增加项目',@a))-CHARINDEX('增加项目',@a))
gogodiy 2011-08-15
  • 打赏
  • 举报
回复
如果不希望出现[]符号,可以再使用replace函数将[]替换成''。
gogodiy 2011-08-15
  • 打赏
  • 举报
回复

select SUBSTRING(@a,CHARINDEX('增加项目',@a),CHARINDEX(' ',@a,CHARINDEX('增加项目',@a))-CHARINDEX('增加项目',@a))
geniuswjt 2011-08-15
  • 打赏
  • 举报
回复

--查"妇科检查"、"内科"、"外科"等这些内容
select substring(col,(charindex('目',col)+2),4)
提取内科、外科、妇科检查前面[]中的这些编号
select substring(col,(charindex('目',col)+7),(charindex('支',col)-charindex('目',col)-8))

--把col换成你的字段,from、where什么的自己加下,试试
oO寒枫Oo 2011-08-15
  • 打赏
  • 举报
回复


select col_name, substring(col_name,charindex('增加项目',col_name)+4,charindex('支付方式',col_name)-charindex('增加项目',col_name)-4)
from table_name
where charindex('增加项目',col_name)>0 and charindex('支付方式',col_name)>0
lanmengxjh 2011-08-15
  • 打赏
  • 举报
回复
用charindex和substring结合来取
zhangzhen_927116 2011-08-15
  • 打赏
  • 举报
回复
截取字符串

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧