Re: [SQL ] 如何去掉中間文字

看板Database (資料庫)作者 (低調)時間14年前 (2011/06/26 11:02), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《howardandy (醉蒼穹)》之銘言: : ※ 引述《akhu (wait)》之銘言: : : 現在的TABLE是 : : 欄位一 欄位二 : : name date : : A-A 2011/6/17 12:00:00 : : A-B 2011/6/17 13:00:00 : : AA-A 2011/6/17 14:00:00 : : B_A 2011/6/18 14:00:00 : : B_B 2011/6/18 15:00:00 : : AA-A 2011/6/18 16:00:00 : : 我要如何去掉最後-A、-B、_A、_B : : 欄位一 欄位二 欄位三 : : name date newName : : A-A 2011/6/17 12:00:00 A : : A-B 2011/6/17 13:00:00 B : : AA-A 2011/6/17 14:00:00 AA : : B_A 2011/6/18 14:00:00 B : : B_B 2011/6/18 15:00:00 B : : AA-A 2011/6/18 16:00:00 AA : : 因為前面字串的字數不確定,所以我想從右邊開始抓兩個,卻不知如何下手@@ : : 有人可以教我一下嗎?謝謝 : 推文太久了,我直接回文.. : 下面不是MS SQL的寫法,您參考看看.... : -2 可用下面取代,是否有更精練的寫法,這樣詢問其他高手囉 : DECODE(INSERT(NAME, '_', 1), 0, : DECODE(INSERT(NAME, '-', 1),0,0, INSERT(NAME, '-', 1)), : INSERT(NAME, '_', 1)) 下面是MSSQL的寫法 沒有測試過,不確定有沒有問題 CASE WHEN CHARINDEX('_', name) > 0 THEN LEFT(name, CHARINDEX('_', name)-1) WHEN CHARINDEX('-', name) > 0 THEN LEFT(name, CHARINDEX('-', name)-1) ELSE name END 意思跟上面Oracle寫法差不多 缺點是要先知道出現的分隔號會有多少種類才能這樣寫 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.165.77.139

06/26 11:22, , 1F
如果有REGEX可以用的話....就可以用 \w+ ...
06/26 11:22, 1F
文章代碼(AID): #1E1g4wcl (Database)
討論串 (同標題文章)
文章代碼(AID): #1E1g4wcl (Database)