2015-05-28 76 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