1
Hello SQL Server专家。请帮助我以高效的方式将布尔逻辑(和,或)应用于SQLsServer中以逗号分隔的输入字符串。用于SQL Server的逗号分隔输入字符串
实施例:
DECLARE @ATable TABLE(ID INT, Value varchar(50))
INSERT INTO @ATable
VALUES (1, 'A'), (1, 'B'), (1, 'C'), (2, 'C'), (2, 'D'), (3, 'A'), (4, 'B')
declare @inputStr varchar(max)
set @inputStr = 'A,B,C,D'
declare @andOr varchar(30) -- can be either 'and' or 'or'
if @andOr = 'and'
,我想获得具有值的A和B二者,在上述表中的结果将是与ID 1的数据ID,这样的结果将是
ID | Values
-----------
1 | A,B,C
if @andOr = 'or'
,我想获得具有值的A或B在上述表中的结果将是与编号1,3和4的数据ID,这样的结果将是
ID | Values
-----------
1 | A,B,C
3 | A
4 | B
谢谢。
我已经使用动态SQL尝试,但它变得很慢时 – WorkInProgress
您需要输入字符串的长度增加将字符串拆分成单独的行以便能够最好地处理任何类型的查询。更好的是 - 首先有一个表值参数而不是字符串! – Bridge
对于AND情况,您需要执行Bridge建议的操作。 IN子句通常适用于你的OR案例。 –