结果中某些记录的条件

时间:2019-01-24 02:43:52

标签: sql-server

如何过滤结果集中的某些结果? 例如,我的数据集如下所示:

enter image description here

我想获取所有记录,但是对于Name ='Peter',我不希望'-'出现在最终结果中。 (史蒂文(Steven)可以使用“ Apple-”,彼得(Peter)可以使用“苹果(Apple)”)

除了使用光标之外,什么是最好的方法(或者最有效的方法?)

例如,如果我的条件是选择所有用户,但是当“名称”是Peter且产品包含“-”时,则不要选择它。但是,当用户名是Peter且产品不包含“-”时,请选择它作为结果。

2 个答案:

答案 0 :(得分:2)

您可以使用CASE语句来完成

SELECT Name, 
       Product = CASE WHEN Name = 'Peter' THEN REPLACE(Product, '-', '') ELSE Product END

编辑:

要从结果中排除Peter和带有-的乘积,请使用WHERE子句

WHERE NOT (Name = 'Peter' and Product like '%-%')

答案 1 :(得分:0)

我想您要的是列出所有名称均为peter并且产品中没有'-'的结果的列表。以下SQL将实现这一点:

SELECT *
FROM   <table>
WHERE  Name = 'Peter'
   AND NOT Product LIKE '%-%'