这是原来的数据
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.原数据和结果都是一条记录

解决方案 »

  1.   

    大概看了一下你的数据,个人觉得很奇怪,这个问题用 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)
      

  2.   

    是否启用 text in row  ????
      

  3.   

    完全测试好了给你,效果和你的需求一样,你自己把字符串改成字段名就可以了
    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)
    +'"'
      

  4.   

    比如,你的字段名: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
    )+'>"'
      

  5.   

    LS上的,楼主的列是text,首先你的len函数就通不过
      

  6.   

    哦,呵呵,没注意到,2005的 varchar(max) 很好用的啊,
    我个人认为,存储一个链接而已,哪里会用到 text 啊,效率低,使用也不方便
      

  7.   

    '<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">
    '这些都是在一个字段里面的啊?刚才没注意到,这样的话,还是前台程序用正则表达式来处理比较好,数据库的处理不是万能的