2017-08-02 146 views
-1

我被困在這個問題中,我無法找到解決方案。 我有兩列cus_categorycus_flag。列cus_category具有如下值:cus_category我們如何檢查一個字符串是否存在或不在Oracle列表中用逗號分隔的值db

existing,cleared 
existing 
cleared 
expansion,exisitng,cleared 
expansion,cleared 
former 
former,cleared 
former,cleared,expansion 
former,existing,cleared 

等等。我想將cus_flag設置爲1,其中cus_category的值是擴展並存在,即使它與expansion,exisitng,cleared類似,並將清零和前者的值設置爲0。如何實現這個任何人都可以幫助我。

+1

這意味着你是表設計是不正確的,因爲它違反了1NF,如果它在1NF它不會是一個問題 –

+0

在一個單獨的表格中,即cus_category_values指定每一行的值與現有的值一樣,並設置其適當的值,即在這裏1.對於其餘的值及其相應的適當值,類似地進行設置。因此,在代碼中,參考此表並獲取相應的值 –

+0

這是客戶要求我們保留值的原因。 – Shivanshu

回答

0

如果類別應具有膨脹和現有然後,

Update [YourTable] 
Set cus_flag= Case when (cus_category like '%expansion%' and cus_category like '%existing%') 
then 1 else 0 end 

如果類別應該有任一擴張的或現有的

Update [YourTable] 
Set cus_flag= Case when (cus_category like '%expansion%' or cus_category like '%existing%') 
then 1 else 0 end 
+0

謝謝隊友。 :) – Shivanshu

+0

請upvote或標記爲答案,如果這個答案已經幫助你:) – Kapil

0

與2個不同的更新

update your_table set cus_flag = 1 
    where cus_category like '%expansion%' and cus_category like '%exisitng%'; 

update your_table set cus_flag = 0 
    where cus_category like '%cleared%' and cus_category like '%former%'; 
+0

謝謝隊友。雖然我猜想,而不是'和'它應該是'或'。我對嗎?也清除存在與擴大和現有也這樣這個查詢將在那裏矛盾。 – Shivanshu

+0

它取決於你想要的內容,如果你想更新,只有當兩個值都出現在列中時,它是'和',否則它是'或'。 – Mynsk

+0

我想更新是否有單個值或兩個值都存在。我有現有的和擴大的價值應該是1,無論他們是單獨或一起,否則爲零 – Shivanshu

相關問題