下面的查询应该可以解决问题:
SELECT LEFT(Name, 5)
FROM Production.Product
WHERE
('Variable1' = '' OR product.name LIKE 'Variable1') AND
('Variable2' = '' OR product.brand LIKE 'Variable2') AND
('Variable3' = '' OR prodcut.price > 'Variable3') AND
('Variable4' = '' OR prodcut.expirydate > 'Variable4')
ORDER BY ProductID;
但是,您的查询看起来并不健康 ATM。一个可能在 MySQL 和 MSSQL 上运行的程序如下所示:
SELECT LEFT(Name, 5)
FROM Production.Product
WHERE
(@Variable1 = '' OR product.name LIKE @Variable1) AND
(@Variable2 = '' OR product.brand LIKE @Variable2) AND
(@Variable3 = '' OR prodcut.price > @Variable3) AND
(@Variable4 = '' OR @Variable4 IS NULL OR prodcut.expirydate > @Variable4)
ORDER BY ProductID;
尽管如此,您首先必须确定可能仍会更改查询的变量的数据类型,并且您还必须将“*”和/或“%”通配符添加到您在 LIKE 或其他地方抛出的字符串中没有多大意义,'=' 会快得多。
希望这可以帮助。
干杯