我在表格中有一个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)
但它也没有奏效。
你能指导我正确的方向并告诉我如何更换文字吗?
答案 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
。