我的SQL并不强大,我承认......但我的查询在MS SQL Server中类似于下面的内容:
SELECT p.Product_ID as ID,
(p.Product_Number + ' - ' + p.Product_Name) as Name
FROM Product p;
我想知道,是否可以对该连锁列进行查询?或者我是否必须使用两个WHERE
子句并将它们与AND
组合?
答案 0 :(得分:3)
您可以在where子句中使用表达式。像这样:
SELECT p.Product_ID as ID, (p.Product_Number + ' - ' + p.Product_Name) as Name
FROM Product p
WHERE (p.Product_Number + ' - ' + p.Product_Name) = '123 - Name';
答案 1 :(得分:1)
到目前为止,其他答案仍然有效,但它们根本不会很好地扩展,因为它们是不可用的。这意味着没有索引可以帮助这些查询,因为它必须为表中的每一行执行字符串连接,以确定它是否是有效行。从性能角度来看,使用两个谓词会更好。在我看来,这也使你的查询更加清晰。
从性能的角度来看,这是执行此操作的最佳方式。
SELECT p.Product_ID as ID
, p.Product_Number + ' - ' + p.Product_Name as Name
FROM Product p
WHERE p.Product_Number = '123'
AND p.Product_Name = 'Name';
答案 2 :(得分:0)
如果您的服务器支持,您可以在WHERE
子句中使用连接或使用CONCAT()
功能:
SELECT p.Product_ID as ID,
(p.Product_Number + ' - ' + p.Product_Name) as Name
FROM Product p
where
p.Product_Number + ' - ' + p.Product_Name = 'blah' ;
或
SELECT p.Product_ID as ID,
concat(p.Product_Number,' - ' ,p.Product_Name) as Name
FROM Product p
where
concat(p.Product_Number,' - ' ,p.Product_Name) = 'blah' ;