gpt4 book ai didi

sql - 从字符串/文本 SQL Server 中提取 float

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

我有一个应该有 float 值(价格)的数据字段,但是,数据库设计者搞砸了,现在我必须在该字段上执行聚合函数。而 80% 的时间数据格式正确,例如。 “80.50”,有时保存为“$80.50”或“每平方米 80.50 美元”。

数据字段是nvarchar。我需要做的是从 nvarchar 中提取 float 。我遇到了这个:Article on SQL Authority

然而,这解决了我一半的问题,或者有人可能会说,这使它更加复杂。该函数只返回字符串中的数字。即“每平方米 80.50 美元”将返回 80502。显然,这是行不通的。我试图改变 Regex 从 => PATINDEX('%[^0-9]%', @strAlphaNumeric) to=> PATINDEX('%[^0-9].[^0-9]%', @strAlphaNumeric)不工作。任何帮助将不胜感激。

最佳答案

这会满足您的需要,已在 ( http://sqlfiddle.com/#!6/6ef8e/53 ) 上测试

DECLARE @data varchar(max) = '$70.23 per m2'
Select LEFT(SubString(@data, PatIndex('%[0-9.-]%', @data),
len(@data) - PatIndex('%[0-9.-]%', @data) +1
),
PatIndex('%[^0-9.-]%', SubString(@data, PatIndex('%[0-9.-]%', @data),
len(@data) - PatIndex('%[0-9.-]%', @data) +1))
)

但是正如 jpw 已经提到的那样,在 CLR 上使用正则表达式会更好

关于sql - 从字符串/文本 SQL Server 中提取 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20116769/

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