- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个字符串“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/
您认为以下结果如何? SELECT CHARINDEX('space and /* comment */', 'Phrase with space and /* comment */') AS Mat
有一个列 name 我想从中创建一个新列。示例: name asd_abceur1mz_a asd_fxasdrasdusd3mz_a asd_abceur10yz_a asd_fxasdrasdus
我正在尝试使用“a”作为分隔符将此字符串分成不同的列 005031812180200000100aRemaining Inside Terminala Cassette 1(BIN1)/c:HTG 2
我有下面的 sql 查询,需要在 bigquery 上运行 select replace(substring(p.name, charindex(',', p.name), len(p.name)),
我有一列数据是这样的 DOESTOEIVSKI ALEXANDER JAMES JOYCE ROBERT LUDLUM MURAKAMI HARUKU 目标:使第一个字符串大写,其余小写,第二个字
有谁明白为什么我仍然得到 0 的结果: SELECT [KnowItAll].[dbo].[VSM_CanculateTermFrequency] ( 'hello hi hello by h
我有一个表 MsStaff 由几列组成。其中一列是 StaffName。 StaffName 数据包含双字姓名(如 'Edy Harsono')和三字姓名(如 'Dian Felita Tanoto'
我有一个表 MsStaff 由几列组成。其中一列是 StaffName。 StaffName 数据包含双字姓名(如 'Edy Harsono')和三字姓名(如 'Dian Felita Tanoto'
我一直在存储过程中使用 CHARINDEX 来检查 NVARCHAR(MAX) 类型的变量,但今天我发现 CHARINDEX有 8,000 字节的限制! 我找到这篇文章SQL CHARINDEX()
我的数据库中有一个字段,出于报告目的,我计划使用以下语句将其截断为 50 个字符。 SELECT (CASE WHEN (LEN(Notes) > 50) THEN SUBSTRING(Notes,
有人可以使用新的用户定义函数复制 CHARINDEX 吗? (使用指令) IF(CHARINDEX('(G)',v_username) = 0) THEN mysql版本。如果能够保持功能不变我的迁移
我在 SSIS 中有一个 Excel 源代码,其中有一列名为 [Name]其中有一个类似 Joe Bloggs 的条目 我想将 [Name] 分为 [Forename] 和 [Surname] 请问如
我们使用 Entity Framework 进行数据库访问,当我们“思考” LIKE 语句时 - 它实际上会生成 CHARINDEX 内容。因此,在我简化它们以在我们的特定服务器上证明一个点之后,这里
如何根据“-”字符拆分以下字符串? 所以如果我有这个字符串:LD-23DSP-1430 我怎么能把它分成这样的单独的列: LD 23DSP 1430 另外,如果需要(没有“-
我有一个关于 SQL SERVER charindex 函数的简单问题。 DECLARE @VAR1 varchar SET @VAR1 = 'abcdef' PRINT CHARINDEX('c',
我有一个字符串“some.file.name”,我想抓取“some.file”。 为此,我需要找到最后一次出现的“.”在一个字符串中。 我的解决方案是: declare @someStr varch
我有一个关于 SQL SERVER charindex 函数的简单问题。 DECLARE @VAR1 varchar SET @VAR1 = 'abcdef' PRINT CHARINDEX('c',
我有以下模型 public class Exchange { public int Id { get; set; } [Index("ExchangeIdx", 1)] pub
我想知道之间是否存在差异(除了引擎兼容性和可选事件) CHARINDEX (expressionToFind ,expressionToSearch [, start_location]) 和 INS
我需要将逗号分隔的字符串拆分为第二列我有下表: CL1 POS POS2 LENGHT ALLELE 1 3015108,30151
我是一名优秀的程序员,十分优秀!