替换NTEXT列中的单引号/撇号

时间:2014-10-17 04:49:10

标签: sql-server tsql sql-server-2008 replace

我在表格中有一个NTEXT列,其中包含带有单引号的XML标记数据。我必须替换具有XML标记数据的字符串并使用空白引用引号。

我在col中的数据如下

<?xml version="1.0" encoding="utf-8" ?> <securesite>   <content>     <formsections>       <version>12</version>       <introduction>         <p>Based on the product </p>         <p>If you are registered for  </p>     <p>                     <![CDATA[         **<p><b>Can't see your form in the list below</b></p>**         <a href="http://www.testcom.aspx" target="_blank" alt="View forms">View forms</a>         ]]>                 </p><.....

我必须删除字符串

<p><b>Can't see your form in the list below</b></p>

我已尝试使用以下查询,但它无效:

UPDATE Table SET Col = REPLACE( Col, '  <p><b>Can't see your form in the list below</b></p>  ', '')

还尝试将单引号替换为''''单引号:

UPDATE Table SET Col = REPLACE( Col, '  <p><b>Can''''t see your form in the list below</b></p>  ', '')

我也试过这个:

UPDATE Table SET Col =REPLACE( CAST( col as varchar(max) ), '  <p><b>Can''''t see your form in the list below</b></p>  ', '')

也尝试了建议

DECLARE @YourOriginalText NVARCHAR(MAX)
DECLARE @YourModifiedText NVARCHAR(MAX)

SELECT @YourOriginalText = CAST(Col AS NVARCHAR(MAX))FROM [Table]
SET @YourModifiedText = REPLACE( CONVERT(NVARCHAR(MAX), Col), N'  <p><b>Can''t see     your form in the list below</b></p>  ', '')
SELECT @YourModifiedText

UPDATE [Table] SET Col= CAST(@YourModifiedText AS NTEXT)

但它也没有奏效。

你能指导我正确的方向并告诉我如何更换文字吗?

1 个答案:

答案 0 :(得分:1)

转义单引号是两个单引号,而不是四个。此外,NTEXT似乎不适用于REPLACE函数,因为您收到以下错误:

  

Msg 8116,Level 16,State 1,Line 1
  对于替换函数的参数1,参数数据类型ntext无效。

所以,试试这个(NTEXT无法与=进行比较,因此您需要使用LIKE):

UPDATE [Table]
SET Col = N''
WHERE Col LIKE N'  <p><b>Can''t see your form in the list below</b></p>  ';

OR ,将列转换为NVARCHAR(MAX),以便它可以与REPLACE函数一起使用:

UPDATE [Table]
SET Col =
   REPLACE( CONVERT(NVARCHAR(MAX), Col),
            N'  <p><b>Can''t see your form in the list below</b></p>  ',
             '');

(以上查询基本上是您的第3次尝试,但已正确转义嵌入式单引号)

在这两种情况下,由于它是一个NTEXT字段,你应该在字符串文字前加上一个大写 - &#34; N&#34;以及转换/转换为NVARCHAR而不是VARCHAR