说我有一个表,音乐:凡与和凝聚
Genre Artist Song
Rock Rolling Stones Brown Sugar
Rock Bob Seger Night Moves
Country Eric Church Record Year
Pop Bruno Mars Grenade
而且我有
DECLARE @Genre VarChar(MAX) = NULL
DECLARE @Artist VarChar(MAX) = NULL
SELECT *
FROM Music M
WHERE (M.Genre = COALESCE(@Genre, M.Genre) OR
M.Artist = COALESCE(@Artist, M.Artist))
这让我选择一个流派,并添加一个随机的艺术家的选择,我也想看看。
但是,如果我想在多个艺术家作为一个字符串传递,什么 即
@Genre = Rock
@Artist = 'Eric Church, Bruno Mars'
凡在本质上我需要的报表,但还必须处理情况,其中变量为空?
我正在使用SQL SERVER。
如果需要感谢您
考虑使用一个字符串分割功能,例如:https://sqlperformance.com/2012/07/t-sql-queries/split-strings – ZLK
你想'AND'而不是'OR'。否则,将NULL传递到任一字段将返回所有行。 –