SQL选择字符左侧的所有内容

时间:2019-05-16 21:56:14

标签: sql sql-server

我需要选择字符串中连字符左侧的所有内容,但是某些字符串具有2个连字符,在这种情况下,我需要选择第二个连字符左侧的所有内容。

字符串的长度从不相同,有些字符串根本没有连字符。

示例数据:

  1. 新闻发布经理
  2. 电视联合主持人

预期结果:

  1. 经理
  2. 共同主持人

2 个答案:

答案 0 :(得分:1)

从最后一个连字符开始删除所有内容如何?

您可以使用stuff()来做到这一点:

select stuff(str, len(str) - charindex('-', reverse(str)) + 1, len(str), '')
from (values ('Co-Host-Television'), ('Manager-News Delivery')) v(str);

或更妙的是,使用left()

select left(str, len(str) - charindex('-', reverse(str)) )
from (values ('Co-Host-Television'), ('Manager-News Delivery')) v(str);

答案 1 :(得分:0)

SQL并不是真正用于字符串操作,您应该使用另一种语言(例如在客户端?)来进行这种类型的工作。 但是,这确实是您真正想要的,并且数据很小,不需要做很多事情,您可以使用以下代码:

select rtrim(reverse(substring(reverse('Manager-News Delivery'),
       charindex('-',reverse('Manager-News Delivery'))+1,99)))
select rtrim(reverse(substring(reverse('Co-Host-Television'),
       charindex('-',reverse('Co-Host-Television'))+1,99)))