我有这样一行:SQL Server:如何在查询中使用子字符串?
[Arturo Ochando] <20>
但我只想:
Arturo Ochando
我怎样才能做到这一点?
如何在'select'操作中使用它?
更新: 我想找到第一个和最后一个'['']',只捕捉里面的东西。
例子:
声音:英语版)[钴爪]
回报
钴爪
最好的问候, 瓦尔特·恩里克。
我有这样一行:SQL Server:如何在查询中使用子字符串?
[Arturo Ochando] <20>
但我只想:
Arturo Ochando
我怎样才能做到这一点?
如何在'select'操作中使用它?
更新: 我想找到第一个和最后一个'['']',只捕捉里面的东西。
例子:
声音:英语版)[钴爪]
回报
钴爪
最好的问候, 瓦尔特·恩里克。
获得第一[
和未来]
之间的文本。第一[
和最后]
之间
-- cte for test data
;with actor_character(character) AS
(
select 'voice: English version) [Cobalt Claw]' union all
select 'voice: English version) [Cobalt Claw' union all
select 'voice: English version) Cobalt Claw]' union all
select 'voice: English version) ]Cobalt Claw[' union all
select 'voice: English version) Cobalt Claw'
)
select *,
case
-- Test for not valid positions
when Start.Pos = 1 or Stop.Pos = 0
then character
else substring(character, Start.Pos, Stop.Pos-Start.Pos)
end
from actor_character
cross apply (select charindex('[', character)+1) as Start(Pos)
cross apply (select charindex(']', character, Start.Pos)) as Stop(Pos)
获取文本。
-- cte for test data
;with actor_character(character) AS
(
select 'voice: English version) [Cobalt Claw]' union all
select 'voice: English version) [Cobalt Claw' union all
select 'voice: English version) Cobalt Claw]' union all
select 'voice: English version) ]Cobalt Claw[' union all
select 'voice: English version) [Cobalt]Claw]' union all
select 'voice: English version) Cobalt Claw'
)
select *,
case
-- Test for not valid positions
when Start.Pos = 0 or Stop.Pos = 0 or Start.Pos > len(character)-Stop.Pos
then character
else substring(character, Start.Pos+1, len(character)-Stop.Pos-Start.Pos)
end
from actor_character
cross apply (select charindex('[', character)) as Start(Pos)
cross apply (select charindex(']', reverse(character))) as Stop(Pos)
select substring(field, charindex('[', field) + 1, charindex(']', field) - charindex('[', field) - 1)
@squawknull这个<20>走了一排,数据库不是我的。 – 2011-04-17 22:15:40
我明白了。所以它是字符串的一部分。我会修改我的查询。 – squawknull 2011-04-17 22:21:58
我尝试你的建议,但现在在这里工作的是我的情况: SELECT TOP(50)子字符串(字符,charindex('[',字符)+ 1,charindex(']',字符) - charindex('['字符) - 1)FROM actor_character – 2011-04-17 22:41:55
好的:你如何更新这个以找到最后的']'(见问题中的更新)? – 2011-04-18 08:18:04
@Jon - 增加了一个使用最后一个']'的代码。 – 2011-04-18 08:52:54
感谢兄弟,它完美的作品。 – 2011-04-18 12:45:29