SQL Server:如何在查询中使用子字符串?

| 我有这样的行:
[Arturo Ochando]  <20>
但我只想要:
Arturo Ochando
我怎样才能做到这一点 ? 以及如何在“选择”操作中使用它? 更新: 我想找到第一个和最后一个\'[\'\'] \',并仅捕获其中的内容。 例:   声音:英文版)[钴爪] 返回   钴爪 最好的祝福, Valter Henrique。     
已邀请:
获取第一个
[
和下一个
]
之间的文本。
-- 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)
获取第一个ѭ2last和最后一个
]
之间的文本。
-- 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)
    
听起来您需要一个正则表达式,才能从源字符串中获取所需的数据。 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     
select substring(field, charindex(\'[\', field) + 1, charindex(\']\', field) - charindex(\'[\', field) - 1)
    

要回复问题请先登录注册