推 iFEELing:如果有REGEX可以用的話....就可以用 \w+ ... 06/26 11:22
※ 引述《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