首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server:如何在查询中使用子字符串?

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

Stack Overflow用户
提问于 2011-04-17 22:09:58
回答 3查看 8.5K关注 0票数 1

我有这样的一排:

Arturo Ochando <20>

但我只想:

Arturo Ochando

我怎么能这么做?

在“select”操作中如何使用?

更新:,我想找到第一个和最后一个'‘,只捕捉里面的东西。

示例:

语音:英文版)钴爪

返回

钴爪

向你问好,瓦尔特·亨里克。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-18 08:08:40

获取第一个[和下一个]之间的文本。

代码语言:javascript
复制
-- 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)

获取第一个[和最后一个]之间的文本。

代码语言:javascript
复制
-- 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)
票数 2
EN

Stack Overflow用户

发布于 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

票数 1
EN

Stack Overflow用户

发布于 2011-04-17 22:13:29

代码语言:javascript
复制
select substring(field, charindex('[', field) + 1, charindex(']', field) - charindex('[', field) - 1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5696796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档