gpt4 book ai didi

SQL Server 2005 :charindex starting from the end

转载 作者:行者123 更新时间:2023-12-02 07:38:39 26 4
gpt4 key购买 nike

我有一个字符串“some.file.name”,我想抓取“some.file”。

为此,我需要找到最后一次出现的“.”在一个字符串中。

我的解决方案是:

 declare @someStr varchar(20)

declare @reversedStr varchar(20)

declare @index int

set @someStr = '001.002.003'

set @reversedStr = reverse(@someStr)

set @index = len(@someStr) - charindex('.',@reversedStr)

select left(@someStr,@index)

嗯,是不是太复杂了?我只是想在 where 子句中使用“some.file”。

大家有什么好主意吗?

最佳答案

你需要用它做什么?您是否需要抓取最后一次出现给定分隔符之后的字符?

如果是这样:反转字符串并使用普通的 CHARINDEX 进行搜索:

declare @test varchar(100)
set @test = 'some.file.name'

declare @reversed varchar(100)
set @reversed = REVERSE(@test)

select
REVERSE(SUBSTRING(@reversed, CHARINDEX('.', @reversed)+1, 100))

您将返回“some.file” - 直到最后一个“.”的字符。在原始文件名中。

SQL Server 中直接没有“LASTCHARINDEX”或类似的东西。您可能会考虑在 SQL Server 2005 及更高版本中做一个很棒的 .NET 扩展库,并将其作为程序集部署到 SQL Server 中 - T-SQL 在字符串操作方面不是很强,而 .NET 确实很强。

关于SQL Server 2005 :charindex starting from the end,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1851650/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com