1

搜索使用相同值的值

例子

SELECT Name, UnitPrice, Quantity, Color
FROM Product
WHERE Name Like '2' OR UnitPrice Like '2' OR Quantity LIKE '2' OR  Color LIKE '2'

有没有办法缩短句子,这样我就不需要重复变量 LIKE 'value'?

4

1 回答 1

5

LIKE没有通配符是=

SELECT Name, UnitPrice, Quantity, Color
FROM Product
WHERE '2' IN (Name, UnitPrice, Quantity, Color)

这会扩展为一系列 OR 条件
请注意,'2'在 OR 扩展后,字符串将根据需要进行 CAST

如果确实需要通配符和 LIKE,则必须使用一系列 OR 语句。

最后,这不会在性能方面进行扩展。有了良好的索引(例如,每列一个,其他 2 个作为 INCLUDE 列),那么这可能会更好地写成单独的查询,在它们之间使用 UNION

编辑,为清楚起见

OP想要使用通配符。因此我的IN建议不会奏效。所以你必须这样做

WHERE
    Name Like '%2%' OR
    UnitPrice Like '%2%' OR 
    Quantity LIKE '%2%' OR
    Color LIKE '%2%'

由于前导通配符,添加索引没有意义。所以我上面关于索引+包含的文字是无关紧要的

于 2012-06-26T07:05:52.350 回答