我有这样的一排:
Arturo Ochando <20>
但我只想:
Arturo Ochando
我怎么能这么做?
在“select”操作中如何使用?
更新:,我想找到第一个和最后一个'‘,只捕捉里面的东西。
示例:
语音:英文版)钴爪
返回
钴爪
向你问好,瓦尔特·亨里克。
发布于 2011-04-18 08:08:40
获取第一个[和下一个]之间的文本。
-- 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)发布于 2011-04-17 22:20:23
听起来,您需要一个正则表达式,才能从源字符串中获取所需的数据。
http://justgeeks.blogspot.com/2008/08/adding-regular-expressions-regex-to-sql.html
http://blog.tech-cats.com/2007/09/using-regular-expression-in-sql-server.html
发布于 2011-04-17 22:13:29
select substring(field, charindex('[', field) + 1, charindex(']', field) - charindex('[', field) - 1)https://stackoverflow.com/questions/5696796
复制相似问题