gpt4 book ai didi

sql - 返回具有已知前缀和后缀字符的 SUBSTRING

转载 作者:行者123 更新时间:2023-11-30 23:59:12 26 4
gpt4 key购买 nike

我有一个表,它有一个始终以 . 结尾的可变长度前缀和一个始终以 - 开头的可变长度后缀。 - 也可以在我要查找的文本字符串中找到,因此使用 REVERSE() 可能是识别后缀 - 的最佳方法。

例如:Prefix1.ABC-123-Suffix1

我希望 SUBSTRING() 结果看起来像:ABC-123

我能够创建一个 SUBSTRING() 来删除前缀和一个 SUBSTRING() 来删除后缀,但是我很难应用两个都。返回的文本可以是可变长度的。

我试图避免声明一个变量,但我对此持开放态度。如果可能,我宁愿只使用 SUBSTRING()、REVERSE() 和 CHARINDEX()。

这是我目前所拥有的:

SELECT [Col1]
,SUBSTRING((Col1),CHARINDEX('.', (Col1)) + 1, 999) AS [StrippedPrefix]
,REVERSE(SUBSTRING(REVERSE(Col1),CHARINDEX('-', REVERSE(Col1)) + 1, 999)) AS [StrippedSuffix]

--new SUBSTRING() with both Prefix and Suffix stripped

FROM [Table1]

最佳答案

Declare @YourTable table (Col1 varchar(50))
Insert Into @YourTable values
('Prefix1.ABC-123-Suffix1')

Select *
,String=Substring(Col1,charindex('.',Col1)+1,len(Col1)-charindex('.',Col1)-charindex('-',reverse(Col1)))
From @YourTable

返回

Col1                       String
Prefix1.ABC-123-Suffix1 ABC-123

按照 M Ali 的建议(更好)

Select *
,String=PARSENAME(REPLACE(Col1 , '-', '.') , 3) + '-' + PARSENAME(REPLACE(Col1 , '-', '.') , 2)
From @YourTable

关于sql - 返回具有已知前缀和后缀字符的 SUBSTRING,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41286121/

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