路过请进,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