CREATE FUNCTION LoseHtml
(
  @source varchar(5000) 
 )
RETURNS varchar(5000)
AS
 BEGIN
  DECLARE @hr integer
  DECLARE @objRegExp integer
  DECLARE @objMatches integer
  DECLARE @objMatch integer
  DECLARE @getvalue varchar
  DECLARE @returnvalue integer
  DECLARE @results bit
  EXEC @hr = sp_OACreate 'VBScript.RegExp',@objRegExp OUTPUT
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
  EXEC @hr = sp_OASetProperty @objRegExp, 'Pattern','<\/*[^<>]*>'
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
  EXEC @hr = sp_OASetProperty @objRegExp, 'Global',true
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
  EXEC @hr = sp_OASetProperty @objRegExp, 'IgnoreCase',true
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
  EXEC @getvalue = sp_OAMethod @objRegExp,'Replace',@returnvalue OUTPUT,@source
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
  EXEC @hr = sp_OADestroy @objRegExp
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
RETURN @getvalue
END
我想实现asp中下面这个函数的功能。
Function LoseHtml(ContentStr)
Dim ClsTempLoseStr,regEx
ClsTempLoseStr = Cstr(ContentStr)
Set regEx = New RegExp
regEx.Pattern = "<\/*[^<>]*>"
regEx.IgnoreCase = True
regEx.Global = True
ClsTempLoseStr = regEx.Replace(ClsTempLoseStr,"")
LoseHtml = ClsTempLoseStr
End function
请大家帮我看看这个错在哪里?我搞了半天了,它输出给我的总是 '*'....

解决方案 »

  1.   

    http://blog.csdn.net/dutguoyi/archive/2006/08/26/1122916.aspx
    这个应该就是问题的原因
    When character expressions are converted to a data type of a different size, values too long for the new data type are truncated, and SQL Server displays an asterisk (*) in both the osql utility and SQL Query Analyzer. When numeric expressions are too long for the new data type to display, values are truncated. This is an example of character truncation: USE pubs 
    SELECT SUBSTRING(title, 1, 25) AS Title, CONVERT(char(2), ytd_sales) 
    FROM titles 
    WHERE type = 'trad_cook' Here is the result set: Title 
    ------------------------- -- 
    Onions, Leeks, and Garlic * 
    Fifty Years in Buckingham * 
    Sushi, Anyone? * 
      

  2.   

    真于也有人回答了,不过我也不知道这位大哥说的对不对,这个东西我中午的时候就已经搞出来了
    下面这个是正确的....
    CREATE FUNCTION LoseHtml
    (
      @source varchar(5000),@Pattern varchar(1000) 
     )
    RETURNS varchar(5000)
    AS
     BEGIN
      DECLARE @hr integer
      DECLARE @objRegExp integer
      DECLARE @objMatches integer
      DECLARE @objMatch integer
      DECLARE @getvalue varchar(5000)
      EXEC @hr = sp_OACreate 'VBScript.RegExp',@objRegExp OUTPUT
    IF @hr <> 0 BEGIN
    RETURN 'A'
    END
      EXEC @hr = sp_OASetProperty @objRegExp, 'Pattern',@Pattern
    IF @hr <> 0 BEGIN
    RETURN 'B'
    END
      EXEC @hr = sp_OASetProperty @objRegExp, 'Global',true
    IF @hr <> 0 BEGIN
    RETURN 'C'
    END
      EXEC @hr = sp_OASetProperty @objRegExp, 'IgnoreCase',true
    IF @hr <> 0 BEGIN
    RETURN 'D'
    END
      EXEC @hr = sp_OAMethod @objRegExp,'Replace',@getvalue OUTPUT,@source,''
    IF @hr <> 0 BEGIN
    RETURN 'E'
    END
      EXEC @hr = sp_OADestroy @objRegExp
    IF @hr <> 0 BEGIN
    RETURN 'F'
    END    
    RETURN @getvalue
    END
    用下面的查询看看结果:sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    sp_configure 'Ole Automation Procedures', 1;
    GO
    RECONFIGURE;
    GO
    Select Replace(dbo.LoseHtml(content,'<\/*[^<>]*>'),' ',''),Content from FS_News