日期:2014-05-18  浏览次数:20441 次

路过请进,SQL字符串操作相关,在线等.
数据库中一个表table_1,有多个字段,其中一个字段名为col_1,   类型为varchar(150).
其值列举几个如下:
id                         col_1
1                             [1]aaaaaa
2                             [7]bbbbbbbbbbb
3                             [13]cccccccc
4                             [0]ddddddd
我现在想查询出表中的这些字段值,但是col_1这一列,我不想获得所有字符串,只想要从最后一个中括号起到最后的字符串,也就是想得到没有中括号的字符如下:
id                   col_1
1                       aaaaaa
2                       bbbbbbbbbbb
3                       cccccc
4                       ddddddd
请问如何能实现?我采用了substring(col_1,6,28)这个函数,但是存在一个问题就是有的并不是从第6个开始,而是从第8个开始,如何才能解决呢?或是有什么其他的方法呢?谢谢!在线等.

------解决方案--------------------
select right(字段名,case when charindex( '] ',reverse(字段名))-1> =0 then charindex( '] ',reverse(字段名))-1 else 0 end)

from 表名


------解决方案--------------------
create table tb(id int,col_1 varchar(20))
insert into tb values(1, '[1]aaaaaa ')
insert into tb values(2, '[7]bbbbbbbbbbb ')
insert into tb values(3, '[13]cccccccc ')
insert into tb values(4, '[0]ddddddd ')
select id,substring(col_1,charindex( '] ',col_1) + 1 , len(col_1)) col_1
from tb
where charindex( '] ',col_1) > 0
drop table tb

/*
id col_1
----------- --------------------
1 aaaaaa
2 bbbbbbbbbbb
3 cccccccc
4 ddddddd
(所影响的行数为 4 行)
*/

------解决方案--------------------
select id, right(col_1 , len(col_1)-charindex( '] ',col_1) ) as col_1 from tb