截取字符的问题。。。????

曲军昌 2013-01-18 10:39:32
如何把这些脚本中的文字提取出来。。。。。。。。。。。
<optgroup label="安全·防护类" class="categoryParentItem">
<option value="555.14879">安全情报与分析</option>
<option value="555.11961">保安</option>
<option value="555.11769">海关与入境</option>
<option value="555.11718">机场安全检查</option>
<option value="555.11926">警察执法</option>
<option value="555.11879">军事作战</option>
<option value="555.11974">门店安全·防损</option>
<option value="555.11914">其他(安全·防护类)</option>
<option value="555.11805">消防与救援</option>
<option value="555.11762">狱警</option>
</optgroup>
...全文
306 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuifengde 2013-01-19
  • 打赏
  • 举报
回复
DECLARE @a TABLE(id INT,b VARCHAR(100))
INSERT @a SELECT 1,'<option value=""555.14879"">安全情报与分析</option>'
UNION ALL SELECT 2,'<option value=""555.11961">保安</option>'
UNION ALL SELECT 3,'<option value=""555.11769"">海关与入境</option>'
UNION ALL SELECT 4,'<option value=""555.11914"">其他(安全·防护类)</option>'



SELECT REPLACE(PARSENAME(REPLACE(REPLACE(b+' ','>','.'),'"',''),2),'</option','') FROM @a



--result
/*
                                                                                                                                                                                                                                                                 
----------------------------------------
安全情报与分析
保安
海关与入境
其他(安全·防护类)

(所影响的行数为 4 行)

*/
-Tracy-McGrady- 2013-01-18
  • 打赏
  • 举报
回复
SQL正则表达式
-Tracy-McGrady- 2013-01-18
  • 打赏
  • 举报
回复

declare @str varchar(200)
set @str='<option value="555.14879">安全情报与分析</option>'
declare @s varchar(100)
set @s=''
while(@str<>'')
begin
if patindex('%['+nchar(19968)+'-'+nchar(40891)+']%',substring(@str,1,1))<>0
  set @s=@s+substring(@str,1,1)
set @str=stuff(@str,1,1,'')
end
-Tracy-McGrady- 2013-01-18
  • 打赏
  • 举报
回复

declare @str varchar(200)
set @str='<option value="555.14879">安全情报与分析</option>'
declare @s varchar(100)
set @s=''
while(@str<>'')
begin
if PATINDEX('%[吖-座]%',substring(@str,1,1))>0 
  set @s=@s+substring(@str,1,1)
set @str=stuff(@str,1,1,'')
end
select @s
刚刚没测试过,现在这个应该可以了,你自己可以写个函数,把@str弄成参数传递
曲军昌 2013-01-18
  • 打赏
  • 举报
回复
引用 5 楼 DBA_Huangzj 的回复:
你这个是一行的数据还是多行的?
多行数据
哥眼神纯洁不 2013-01-18
  • 打赏
  • 举报
回复

with tb(a) as (
select '<optgroup label="安全·防护类" class="categoryParentItem">' union all
select '<option value="555.11961">保安</option>' union all
select '<option value="555.11769">海关与入境</option>' union all
select '<option value="555.11718">机场安全检查</option>' union all
select '<option value="555.11926">警察执法</option>' union all
select '<option value="555.11879">军事作战</option>' union all
select '<option value="555.11974">门店安全·防损</option>' union all
select '<option value="555.11914">其他(安全·防护类)</option>' union all
select '<option value="555.11805">消防与救援</option>' union all
select '<option value="555.11762">狱警</option>'
)
select *,
substring(a,convert(int,PATINDEX('%[吖-座]%',a)),len(a)-PATINDEX('%[吖-座]%',reverse(a))-PATINDEX('%[吖-座]%',a)+2)
from tb
这个可以获取汉字,只是括号不行... 比如倒数第三条只能获取 其他(安全·防护类 等大版解决了
發糞塗牆 2013-01-18
  • 打赏
  • 举报
回复
你这个是一行的数据还是多行的?
曲军昌 2013-01-18
  • 打赏
  • 举报
回复
引用 1 楼 yangsh0722 的回复:
SQL code?12345678910declare @str varchar(200)set @str='<option value="555.14879">安全情报与分析</option>'declare @s varchar(100)set @s=''while(@str<>'')beginif patindex('%['+nchar(19968)+'-'+nch……
你这个截取不到啊

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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