我希望使用PATINDEX()将浮点数从某些varchars中拉出来。我知道在每个varchar字符串中,我只对存在的第一个浮点数感兴趣,但是它们的长度可能不同。
例如
'some text 456.09 other text' 'even more text 98273.453 la la la'
我通常会用正则表达式来匹配它们
"[0-9]+[.][0-9]+"
但是,我找不到PATINDEX接受的+运算符的等效项。因此,它们需要分别与以下项匹配:
'[0-9][0-9][0-9].[0-9][0-9]' and '[0-9][0-9][0-9][0-9][0-9].[0-9][0-9][0-9]'
有什么方法可以将这两个示例varchar与一个有效的PATINDEX模式进行匹配?
我前一段时间在博客上写过这个。 使用SQL Server提取数字
Declare @Temp Table(Data VarChar(100)) Insert Into @Temp Values('some text 456.09 other text') Insert Into @Temp Values('even more text 98273.453 la la la') Insert Into @Temp Values('There are no numbers in this one') Select Left( SubString(Data, PatIndex('%[0-9.-]%', Data), 8000), PatIndex('%[^0-9.-]%', SubString(Data, PatIndex('%[0-9.-]%', Data), 8000) + 'X')-1) From @Temp