我正在使用T-SQL语言,我想知道从字符串中获取特定信息的最佳方法。
字符串示例:
类别:azd Nom du fichier:684157输入文件类型:info ID:21542
想法是获取值“ 684157”,该值将始终在“ fichier:”和“ Type”之间。
我已经尝试过substring
和charindex
,但是我错过了一些。
这是我的代码
select substring(com, charindex('fichier : ', com)+len('fichier : '), charindex('Type', com)-charindex('fichier : ', com) + len('Type'))
from myTable
可能会有更整齐的方法,但这是使用CHARINDEX
和SUBSTRING
的方法。
SELECT SUBSTRING(com,
CHARINDEX('fichier :', com) + LEN('fichier :'), -- start index
CHARINDEX('Type :', com) - (CHARINDEX('fichier :', com) + LEN('fichier :'))) -- length
FROM MyTable
startIndex
是fichier :
的索引加上fichier :
的长度。结束索引是Type :
的索引。对于SUBSTRING
,我们需要使用起始索引和长度。要计算子字符串的长度,我们使用Type :
的索引,然后减去我们为startIndex
计算的结果。
这就是我要做的:
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);