如何从查询结果中替换特定文本

时间:2015-05-28 08:38:25

标签: sql sql-server

我的查询:

select SeqNo, Name, Qty, Price 
from vendor 
where seqNo = 1;

输出如下:

SeqNo   Name    Qty  Price
1       ABC     10   11
1       -do-    11   12
1       ditto   13   14

上面的输出在第一行显示供应商名称为ABC,这是正确的。稍后,当用户输入与"ABC" / '-do-'相同的供应商名称'ditto'时。现在在我的最终查询输出中,我想用-do-替换dittoABC(如上例所示),所以我的最终输出应如下所示:

SeqNo   Name    Qty  Price
1       ABC     10   11
1       ABC     11   12
1       ABC     13   14

4 个答案:

答案 0 :(得分:2)

这是在sql server中为您提供示例数据..不确定您的其他行是什么样的

select SeqNo,
       case when Name in ('-do-','ditto') then 
        (select Name from test where Name not in('-do-','ditto')
        and SeqNo = 1)
        else Name
        end as Name
from table
where SeqNo = 1

答案 1 :(得分:0)

使用REPLACE功能

SELECT SeqNo, REPLACE(REPLACE(Name,'ditto','ABC'),'-do-','ABC'), Qty, Price
FROM vendor
WHERE seqNo = 1;

答案 2 :(得分:0)

使用CASE

select SeqNo,
       case when Name in ('-do-','ditto') then 'ABC' else Name end as name,
       Qty,
       Price 
from vendor 
where seqNo = 1;

答案 3 :(得分:0)

除了其他答案之外,如果您的要求仅包含您发布的样本数据,=)这样做:

 SELECT SeqNo, 'ABC' Name, Qty, Price
   FROM vendor
  WHERE seqNo = 1;