我需要选择字符串中连字符左侧的所有内容,但是某些字符串具有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)))