gpt4 book ai didi

sql - 使用 PATINDEX 在 T-SQL 中查找不同长度的模式

转载 作者:行者123 更新时间:2023-12-02 10:57:12 25 4
gpt4 key购买 nike

我正在寻找从一些 varchar 中提取 float ,使用 PATINDEX() 来发现它们。我知道在每个 varchar 字符串中,我只对存在的第一个 float 感兴趣,但它们可能有不同的长度。

例如

'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 模式相匹配?

最佳答案

我不久前在博客上谈到了这一点。 Extracting numbers with 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

关于sql - 使用 PATINDEX 在 T-SQL 中查找不同长度的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9772566/

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