我的代碼如下:SQL REPLACE功能,如何更換單個字母
REPLACE(REPLACE(cc.contype,'x','y'),'y','z') as ContractType,
這正確更換的,我想什麼,但它unfortunatley改變所有「Z的」爲「y的」當我想
X> Y
Y> Z^
這是否有道理?我不希望所有新的Y在我的第二個REPLACE函數中再次改變。在Microsoft Access,我會做到這一點有以下
IIF(cc.contype = X,Y,IIF(cc.contype = Y,X))
但我不知道如何表述這SQL,我最好用客戶端語言來做這種事情嗎?
非常感謝。
編輯:也嘗試過,沒有運氣:
CASE WHEN SUBSTRING(cc.contype, 1, 1) = 'C'
THEN REPLACE(cc.contype, 'C', 'Signed')
CASE WHEN SUBSTRING(cc.contype, 1, 1) = 'E'
THEN REPLACE(cc.contype, 'E', 'Estimate') as ContractType,
你最初改變周圍的秩序已經奏效,但雖然是一種解決方案沒有我期望的那麼強大。特別是對於未來的類似性質的工作。 你的第二個解決方案似乎更像我之後的事情,但我對UNION功能頗爲陌生。我會回去修改這個功能,並在將來使用這個解決方案(如果它有效!) 謝謝。 – Waller
@Walter,'union'只運行兩個查詢,並將所有行組合成一個集合。 'union'將刪除重複項,'union all'不會。在這種情況下,重複是不可能的,因爲兩個子查詢具有不同的值('signed ...'vs'estimate ...'),因此重複刪除的額外步驟是不必要的。 – paxdiablo