我有一列名爲位置,它有它的數據,如:需要在列反轉數據幫助
texas_dallas florida_miami
我試圖創造條件,擺脫了SQL語句_和反向順序,使我得到:
得克薩斯州達拉斯 佛羅里達州邁阿密
到目前爲止,我有這個說法似乎擺脫了下劃線,並給了我唯一的前項_。選擇SUBSTR(位置,1,INSTR(位置,'_') - 1)從一般的AS輸出;
我在找出需要做的其他事情時遇到了一些麻煩。
我有一列名爲位置,它有它的數據,如:需要在列反轉數據幫助
texas_dallas florida_miami
我試圖創造條件,擺脫了SQL語句_和反向順序,使我得到:
得克薩斯州達拉斯 佛羅里達州邁阿密
到目前爲止,我有這個說法似乎擺脫了下劃線,並給了我唯一的前項_。選擇SUBSTR(位置,1,INSTR(位置,'_') - 1)從一般的AS輸出;
我在找出需要做的其他事情時遇到了一些麻煩。
編輯更正輸出的順序。
SQL> with general as (select 'texas_dallas' as location from dual
2 union all select 'florida_miami' from dual)
3 select substr(location, instr(location, '_') + 1)
4 || ' ' || SUBSTR(location, 1 , INSTR(location, '_') -1) AS output
5 from general;
OUTPUT
-------------------------------------------------------------------------------
dallas texas
miami florida
不錯。但是......我看到他沒有在問題中設計他的數據 - 在達拉斯和佛羅里達之間實際上沒有「 - 它應該是單獨的記錄。 – Chains
非常感謝Shannon,但是我如何才能在表格中的每個state_city上工作? – Christopher
@ kuru kura na ..:我認爲你的評論可能會有些東西可能已經膨脹了。是的,我假設達拉斯和邁阿密是在單獨的記錄。我使用帶有兩個記錄的'with'建立一個視圖,每個城市一個記錄。 –
您需要在表達式中添加更多。首先連接一個空格,然後使用SUBSTR函數提取緊接在下劃線後面的第二個單詞。不向SUBSTR提供長度將剩餘文本結束。
select SUBSTR(location, 1 , INSTR(location, '_')-1) || ' ' || SUBSTR(location, INSTR(location, '_')+1) AS output
from general ;
您也可以嘗試一種REGEXP_REPLACE功能:
select regexp_replace(location,'^(\S+)\_(\S+)$','\2 \1') from general;
是 「texas_dallas florida_miami」 中單列,或者是從兩行數據? 「texas_dallas」在一行中,「florida_miami」在另一行中? –
他們是兩個不同的行。再次感謝您的幫助,因爲它現在都很好! – Christopher