从特定位置的字符串获取值

问题描述 投票:1回答:3

我正在使用T-SQL语言,我想知道从字符串中获取特定信息的最佳方法。

字符串示例:

类别:azd Nom du fichier:684157输入文件类型:info ID:21542

想法是获取值“ 684157”,该值将始终在“ fichier:”和“ Type”之间。

我已经尝试过substringcharindex,但是我错过了一些。

这是我的代码

select substring(com, charindex('fichier : ', com)+len('fichier : '), charindex('Type', com)-charindex('fichier : ', com) + len('Type')) 
from myTable
tsql charindex
3个回答
2
投票

可能会有更整齐的方法,但这是使用CHARINDEXSUBSTRING的方法。

SELECT SUBSTRING(com,  
    CHARINDEX('fichier :', com) + LEN('fichier :'), -- start index
    CHARINDEX('Type :', com) - (CHARINDEX('fichier :', com) + LEN('fichier :'))) -- length
FROM MyTable

startIndexfichier :的索引加上fichier :的长度。结束索引是Type :的索引。对于SUBSTRING,我们需要使用起始索引和长度。要计算子字符串的长度,我们使用Type :的索引,然后减去我们为startIndex计算的结果。


2
投票

这就是我要做的:

SELECT LEFT(S.CutString,CHARINDEX(' Type :',S.CutString)) AS FinalString
FROM (VALUES('Category : azd Nom du fichier : 684157 Type : info Id : 21542'))V(String) --Would be your table
     CROSS APPLY (VALUES(STUFF(V.String,1,CHARINDEX('fichier : ',V.String) + LEN('fichier : '),'')))S(CutString);

0
投票

其他变体:

SELECT parsename(replace(replace(com,'fichier : ','.'), 'Type','.'),2)
FROM MyTable

测试:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.