2015-05-28 32 views
3

我的查询:如何从查询结果替换特定文本

像下面
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 
+0

只溶和同上?你可以用更多的样本行修改你的问题。 – Sachu

+0

什么是rdbms? Sql Server,Oracle还是? –

+0

@ Prakash ..结果你需要显示'XYZ'行吗? – Sachu

回答

2

这是工作在SQL Server中为您品尝data..not确保另一行是如何模样

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 
+0

非常感谢您的善意帮助。它的工作原理和解决我的问题上述问题 – Prakash

+0

@Prakash欢迎 – Sachu

+0

谢谢我的查询总是针对特定的SeqNo,因此它总是具体的。您的查询帮助了我 - 但仅仅为了确认,我相信如果除了某些dos和dittos之外还有多个名称,则完全不可能找到或使用该名称 - 请确认。非常感谢 – Prakash

0

使用REPLACE功能

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

不,我不确定名称是ABC - 它将存储在表 – Prakash

+0

@Prakash它会是什么存储为? – Matt

+0

任何 - ABC可能只是一个价值 - 它可以是任何名字 – Prakash

0

使用CASE

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

它并不总是“ABC”看到对方的回答 – Sachu

+0

的讨论,我很抱歉,如果我对我的问题误导 - 它不是像我想要做的和dittios用ABC来代替 - 它的实际名称这是列出的。该方案是 - 用户正在进入做与从第二记录dittios一旦他们在第一个 – Prakash

+0

普拉卡什输入了正确的名称,不能编辑你的问题,并介绍了如何找到ABC或任何价值,你想的不是“待办事宜 - '和'同上'? – jarlh

0

除了其他答案,如果您的要求只包括样本d ATA你贴,=)这会做:

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

由于您改进了问题,因此您可以忽略我的答案。 – tjeloep