我需要通过一个表并从值中删除一行。我想做的是这样的事情:
UPDATE infotabs
SET [content] =
replace(
replace(
(
SELECT [content]
FROM infotabs AS ib
WHERE ib.infotab_id = i.infotab_id
), '<p>', '')
, '</p>', '')
WHERE infotab_id=
(
SELECT i.infotab_id
FROM infotabs AS i
WHERE ([content] LIKE '%<p>%')
)
但这失败了:
消息4104,级别16,状态1,行8
多部分标识符 “i.infotab_id”无法受约束。
所以基本上我需要循环通过表并移除所有&lt; p&gt;和&lt; / p&gt;从列。有人可以帮助我吗?
答案 0 :(得分:0)
我认为如果你不再把它想象成一个循环,并把它想象成一个集合,你会发现这个查询比你正在尝试的更合乎逻辑:
UPDATE infotabs SET content = REPLACE(REPLACE(content, '<p>', ''), '</p>', '')
WHERE content LIKE '%<p>%' OR content LIKE '%</p>%';
正如我在对Gordon回答的评论中提到的,我没有得到好评,我在这里添加了一个额外的where子句,以便更新所有行,无论它们是否只包含<p>
,只有{{ 1}},或两者兼而有之。对不起,我最初没有透露原因。
答案 1 :(得分:0)
这会有用吗?
UPDATE infotabs
SET [content] = replace(replace([content], '<p>', ''), '</p>', '')
WHERE [content] LIKE '%<p>%'
似乎更简单。