Sql 缩短句子以查找搜索值

Sql 缩短句子以查找搜索值,sql,sql-like,Sql,Sql Like,搜索使用相同值的值 范例 SELECT Name, UnitPrice, Quantity, Color FROM Product WHERE Name Like '2' OR UnitPrice Like '2' OR Quantity LIKE '2' OR Color LIKE '2' 有没有办法缩短句子,这样我就不需要重复像‘value’这样的变量?LIKE没有通配符是= SELECT Name, UnitPrice, Quantity, Color FROM Product WHE

搜索使用相同值的值

范例

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

有没有办法缩短句子,这样我就不需要重复像‘value’这样的变量?

LIKE
没有通配符是
=

SELECT Name, UnitPrice, Quantity, Color
FROM Product
WHERE '2' IN (Name, UnitPrice, Quantity, Color)
这将扩展到一系列或条件
请注意,字符串
'2'
将根据需要在或扩展后强制转换

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

最后,这将无法按性能进行扩展。有了良好的索引(例如每列一个,其他两个作为包含列),这可能会更好地作为单独的查询编写,并在它们之间进行联合

编辑,为了清晰

OP想要使用通配符。因此,我在中的
建议将不起作用。所以你必须这样做

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

由于前导通配符,添加索引没有意义。因此,我上面关于indexes+includes的文字是不相关的

类似于没有通配符的
=

SELECT Name, UnitPrice, Quantity, Color
FROM Product
WHERE '2' IN (Name, UnitPrice, Quantity, Color)
这将扩展到一系列或条件
请注意,字符串
'2'
将根据需要在或扩展后强制转换

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

最后,这将无法按性能进行扩展。有了良好的索引(例如每列一个,其他两个作为包含列),这可能会更好地作为单独的查询编写,并在它们之间进行联合

编辑,为了清晰

OP想要使用通配符。因此,我在
中的
建议将不起作用。所以你必须这样做

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

由于前导通配符,添加索引没有意义。因此,我上面关于indexes+includes的文字是不相关的

谢谢,它确实有效,但我意识到我忘记了添加值,如果值为'28',则此sql将不起作用。原因:它不接受%@unknown:您的示例没有通配符,无法找到“28”。另外,当你寻找2的数量时,为什么你想要28?正在搜索我能理解的名称(…如“%2%”)。请把你的问题说得更清楚:注意,我提到了你真的想要通配符的可能性……是的。我确实读过关于性能方面的文章,如果有太多的“或”。我只是不理解每列一个,其他两个列包括在内。你的意思是“2”在哪里(名称、单价、数量、颜色)。我想要一个像“%2%”这样的示例,以便它能够找到与2相关的任何内容。如果可能的话。@unknown:更新了我的答案。您必须决定是否需要通配符:它会影响SQL和索引选择。确定。谢谢根据你的建议,我会再考虑的谢谢,它确实有效,但我意识到我忘记了添加值,如果值为'28',则此sql将无法工作。原因:它不接受%@unknown:您的示例没有通配符,无法找到“28”。另外,当你寻找2的数量时,为什么你想要28?正在搜索我能理解的名称(…如“%2%”)。请把你的问题说得更清楚:注意,我提到了你真的想要通配符的可能性……是的。我确实读过关于性能方面的文章,如果有太多的“或”。我只是不理解每列一个,其他两个列包括在内。你的意思是“2”在哪里(名称、单价、数量、颜色)。我想要一个像“%2%”这样的示例,以便它能够找到与2相关的任何内容。如果可能的话。@unknown:更新了我的答案。您必须决定是否需要通配符:它会影响SQL和索引选择。确定。谢谢根据你的建议,我会再考虑的