我有一个备忘录字段,其中可能包含&和HTML等价物&amp ;.我需要编写一个脚本来确保&符号的所有实例都是HTML等价物。有下面的脚本,但WHERE子句似乎并不考虑&的个别实例(字符串)。在备忘录领域,只是整个领域...有关如何实现这一点的任何想法?感谢。
UPDATE
STOCKMEM
SET
INETFDESC = CAST(REPLACE(CAST(INETFDESC as NVarchar(MAX)),'&','&') AS NText)
WHERE
INETFDESC LIKE '%&%'
AND INETFDESC NOT LIKE '%&%'
答案 0 :(得分:5)
请改为尝试:
UPDATE STOCKMEM
SET INETFDESC = CAST(
REPLACE(
REPLACE(
CAST(INETFDESC as NVarchar(MAX))
,'&','&')
, '&', ,'&')AS NText)
WHERE INETFDESC LIKE '%&[^amp;]%'
第一次替换会将&
更改为&
,第二次替换会将所有&
替换回&
。
BTW,请注意NText
数据类型为depricated,您应将其转换为nvarchar(max)
。
来自MSDN:
未来的SQL版本中将删除重要! ntext ,文字和图片数据类型服务器。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用 nvarchar(max), varchar(max)和 varbinary(max)。
答案 1 :(得分:2)
你可以通过这个来完成同样的事情:
UPDATE STOCKMEM
SET INETFDESC = CONVERT(NVARCHAR(MAX),(REPLACE(REPLACE(INETFDESC, '&', '&'), '&', '&')))
WHERE INETFDESC LIKE '%&%'