我的网站上有一个复选框列表。我将复选框的值传递给@State。如果仅选中一个复选框,则下面的代码有效,但选中多个复选框时,则无效。
我尝试使用case语句,但构建失败,但出现诸如“关键字'update'附近的语法不正确”之类的错误
[('france', 'brazil'),
('france', 'usa'),
('france', 'uk'),
('france', 'canada'),
('france', 'mexico'),
('france', 'angola'),
('brazil', 'france'),
('brazil', 'usa'),
('brazil', 'uk'),
('brazil', 'canada'),
('brazil', 'mexico'),
('brazil', 'angola'),
('usa', 'france'),
('usa', 'brazil'),
('usa', 'uk'),
('usa', 'canada'),
('usa', 'mexico'),
('usa', 'angola'),
('uk', 'france'),
('uk', 'brazil'),
('uk', 'usa'),
('uk', 'canada'),
('uk', 'mexico'),
('uk', 'angola'),
('canada', 'france'),
('canada', 'brazil'),
('canada', 'usa'),
('canada', 'uk'),
('canada', 'mexico'),
('canada', 'angola'),
('mexico', 'france'),
('mexico', 'brazil'),
('mexico', 'usa'),
('mexico', 'uk'),
('mexico', 'canada'),
('mexico', 'angola'),
('angola', 'france'),
('angola', 'brazil'),
('angola', 'usa'),
('angola', 'uk'),
('angola', 'canada'),
('angola', 'mexico')]
如果用户选中A和D,则结果需要将两者放在一起。
答案 0 :(得分:1)
如果您将多个答案串联在一起,则可以使用+ =附加到以前的更新中:
IF(@State LIKE '%D%')
BEGIN
Update Users set FilterState += 'Ohio' where Email = '[User:Email]'
END
为避免对该表进行多次更新,如果要构建一个字符串,我会事先在变量中进行字符串连接,然后进行更新,例如:
DECLARE @filterState VARCHAR(200)
SET @filterState = CASE WHEN @State LIKE '%A%' THEN 'Michigan' ELSE '' END
+ CASE WHEN @State LIKE '%B%' THEN 'Texas, Louisiana, Arkansas, Oklahoma, Kansas, Missouri' ELSE '' END
--etc
Update Users
set FilterState = @filterState
where Email = '[User:Email]'