可以这样做吗?
"SELECT * FROM account WHERE if(@dropdownsearch) = 'ID' then id=@id else name=@name"
因为我不能在查询字符串之外的其他地方因为这个:
cmd.Parameters.AddRange(queryParams.ToArray());
请帮助
答案 0 :(得分:4)
使用AND/OR
逻辑
SELECT *
FROM account
WHERE (@dropdownsearch = 'ID' and id=@id)
or name=@name
答案 1 :(得分:0)
如果我理解你的困境,你有一个下拉列表,用户可以选择是否搜索ID或名称。现在你需要传递一个或另一个,而不是两个,正确吗? 我以前使用以下逻辑使用多个下拉选项完成此操作:
SELECT * FROM account
WHERE
(CASE WHEN @dropdownsearch = 'ID' then @id else ID END) = ID,
(CASE WHEN @dropdownsearch = 'Name' then @name else name END) = name
所以这里发生的是,如果他们选择了ID,那么它会将你的@id参数中的值与ID的值进行比较。同时它会将名称与自身进行比较。 (姓名)Hanzou =(姓名)Hanzou总是如此,所以名字中的每个值都会传递,@ name将被忽略。 如果用户选择“名称”而不是“ID”
,则相反