数据库中存储的空格就是“ ”,而不是“&nbsp;”,现在我想把他全部替换成&nbsp;,但问题出来了,有些是html标记,里面也有空格“ ”,把这些也替换掉了。比如<a href="#">,a 和href之间的空格。我想问如何只替换正文的空格,而忽略掉html代码之间的空格。100分求助。

解决方案 »

  1.   

    "
        根据学校的有关规定,现对2005年需购置的电脑及辅助设备,采取公开招标方式进行采购。现将有关事项公告如下:
        
                                                  2005年4月6日<a href="uploadfiles/2005111515481634802.doc" target=_blank>2005年电脑及其辅助设备招标文件.doc</a>"
      

  2.   

    上面的是内容,“根据”前面有两个空格,需要替换成&nbsp;,而HTML代码里面的空格则不能替换。
      

  3.   

    如果格式固定,
    取<前面的字符串,替换其中的空格,
    再CONCAT<后面的字符串
      

  4.   

    set @n='根据学校的有关规定,现对2005年需购置的电脑及辅助设备,采取公开招标方式进行采购。现将有关事项公告如下:
        
      2005年4月6日<a href="uploadfiles/2005111515481634802.doc" target=_blank>2005年电脑及其辅助设备招标文件.doc</a>';select concat(replace(left(@n,locate('<',@n)),' ','&nbsp;'),substring(@n,locate('<',@n),locate('>',@n)-locate('<',@n)+1),replace(right(@n,char_length(@n)-locate('>',@n)),' ','&nbsp;'));
      

  5.   

    这个替换由于MYSQL中不支持REG_REPLACE下正则替换。所以无法在MYSQL中简单用标准的内建函数和SQL语句实现。
    如果一定要在MYSQL数据库端实现,则可以用存储过程来实现。但一般来说,这类替换是在程序端实现。
      

  6.   

     #7楼 的方法可以,但问题是你的字符串是不只一对HTML标签。
      

  7.   

    对,HTML标记不一定会有多少个。所以比较麻烦。
      

  8.   

    要么写存储过程,要么自己在C#中通过正则替换实现, C#中也就是不超过5句代码的事儿。 MYSQL存储过程中估计30行代码以上。
      

  9.   

    参数传进来 记得trim 下 如果中间有空格就replace得了