这是一个比较难的字符串截取的题

wuxinyuzhu 2008-01-05 01:46:45

这是原来的数据
create table tble(title varchar(10),con text)
insert into tble
select 'aa',

'<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=2007052909022930yx5064#5">
<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=20070529090229560yx5064">
<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=20070529090229560yx5061">
<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=20070529090229023yx5062#51">
<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=20070529090229010yx5065#6">
<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=20070529090222450yx504x#5xer">
'
要的结果是
<A href="2007052909022930yx5064.html?#5">
<A href="20070529090229560yx5064.html?">
<A href="20070529090229560yx5061.html?">
<A href="20070529090229023yx5062.html?#51">
<A href="20070529090229010yx5065.html?#6">
<A href="20070529090222450yx504x.html?#5xer">
要考滤到的问题
1.这个表中的con字段是text类型的,里面的数据绝对大于8000个字符
2.原表中没有.html?这几个字符
3.最好用一个自定义函数解决这个问题
4.原数据和结果都是一条记录
...全文
137 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuxinyuzhu 2008-01-08
  • 打赏
  • 举报
回复
什么 都行了 只要能做出来 用什么都行
zhouchunyu 2008-01-08
  • 打赏
  • 举报
回复
2005也支持,试试
wuxinyuzhu 2008-01-08
  • 打赏
  • 举报
回复
大家再来帮看一下啊 用2005也行啊
arrow_gx 2008-01-05
  • 打赏
  • 举报
回复
'<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=2007052909022930yx5064#5">
<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=20070529090229560yx5064">
<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=20070529090229560yx5061">
<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=20070529090229023yx5062#51">
<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=20070529090229010yx5065#6">
<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=20070529090222450yx504x#5xer">
'

这些都是在一个字段里面的啊?刚才没注意到,这样的话,还是前台程序用正则表达式来处理比较好,数据库的处理不是万能的
-狙击手- 2008-01-05
  • 打赏
  • 举报
回复
是也
arrow_gx 2008-01-05
  • 打赏
  • 举报
回复
哦,呵呵,没注意到,2005的 varchar(max) 很好用的啊,
我个人认为,存储一个链接而已,哪里会用到 text 啊,效率低,使用也不方便
-狙击手- 2008-01-05
  • 打赏
  • 举报
回复
LS上的,楼主的列是text,首先你的len函数就通不过
arrow_gx 2008-01-05
  • 打赏
  • 举报
回复
比如,你的字段名:aa ,把字符串换成字段名 ,代码如下:


select '<A href="'+SUBSTRING (aa,
CHARINDEX('=',aa,10)+1,
CHARINDEX('#',aa,10)
-CHARINDEX('=',aa,10)-1
)+'.html?'

+SUBSTRING (aa,
CHARINDEX('#',aa,10),
len(aa)
-CHARINDEX('#',aa)+1
)

+'>"'

arrow_gx 2008-01-05
  • 打赏
  • 举报
回复
完全测试好了给你,效果和你的需求一样,你自己把字符串改成字段名就可以了


select '<A href="'+SUBSTRING ('<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=2007052909022930yx5064#5',
CHARINDEX('=','<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=2007052909022930yx5064#5',10)+1,
CHARINDEX('#','<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=2007052909022930yx5064#5',10)
-CHARINDEX('=','<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=2007052909022930yx5064#5',10)-1

)+'.html?'

+SUBSTRING ('<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=2007052909022930yx5064#5',
CHARINDEX('#','<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=2007052909022930yx5064#5',10),
len('<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=2007052909022930yx5064#5')
-CHARINDEX('#','<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=2007052909022930yx5064#5')+1

)
+'"'
-狙击手- 2008-01-05
  • 打赏
  • 举报
回复
是否启用 text in row ????
arrow_gx 2008-01-05
  • 打赏
  • 举报
回复
大概看了一下你的数据,个人觉得很奇怪,这个问题用 sql 查询来实现也是可以的,但是效率不高,甚至可以说比较低,这种需求,应该用前台程序进行处理

用 sql 来实现的话,可以参考如下代码,你自己还需要修改一点点:


select ''+SUBSTRING ('<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=2007052909022930yx5064#5',
CHARINDEX('=','<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=2007052909022930yx5064#5',10)+1,
CHARINDEX('#','<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=2007052909022930yx5064#5',10)
-CHARINDEX('=','<A href="http://localhost:2149/Web/help/help_view.aspx?FunctionModuleid=2007052909022930yx5064#5',10)-1

)



dobear_0922 2008-01-05
  • 打赏
  • 举报
回复
不好搞,帮顶,,,

34,591

社区成员

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

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