作者daidaibruce (低调)
看板Database
标题Re: [SQL ] 如何去掉中间文字
时间Sun Jun 26 11:02:16 2011
※ 引述《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
1F:推 iFEELing:如果有REGEX可以用的话....就可以用 \w+ ... 06/26 11:22