我需要选择字符串中连字符左侧的所有内容,但有些字符串有两个连字符,在这种情况下,我需要选择第二个连字符左侧的所有内容。
字符串永远不会有相同的长度,有些字符串根本没有连字符。
示例数据:
新闻递送
-
预期结果:
发布于 2019-05-17 11:19:28
删除从最后一个连字符开始的所有内容如何?
您可以使用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);
发布于 2019-05-17 06:22:36
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)))
https://stackoverflow.com/questions/56177090
复制相似问题