sql - 一些数字被截断。我想提取所有数字
问题描述
我试图只解析字符串中的数字。我的代码必须非常接近,但这里有些问题,因为最后一个字符串中的几个数字被截断,尽管前两个字符串看起来不错。
这是我的代码。
Drop Table SampleData
Create table SampleData
(id int, factor varchar(100))
insert into #source_Policy values (1 ,'AAA 1.058 (Protection Class)')
insert into #source_Policy values (2, 'BBB0.565 (Construction) ')
insert into #source_Policy values ( 3, 'CCCCC 1.04890616 (Building Limit Rel')
Select *
From SampleData
;with processTable as (
select id, factor, num
from SampleData
cross apply (
select (select C + ''
from (select N, substring(factor, N, 1) C from (values(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)) Num(N) where N<=datalength(factor)) t
where PATINDEX('%[0-9.]%',C)> 0
order by N
for xml path(''))
) p0 (num)
)
SELECT id, factor, num
FROM processTable
这是我得到的结果。
在 num 列中1.04
,我希望看到完整的精度,而不是 ,所以:1.04890616
解决方案
我会这样想:
select s.*, v2.numstr
from sampledata s cross apply
(values (stuff(factor, 1, patindex('%[0-9]%', factor) - 1, ''))) v(str) cross apply
(values (left(v.str, patindex('%[^0-9.]%', v.str + 'x') - 1))) v2(numstr);
这是一个 SQL 小提琴。
推荐阅读
- python - 挖掘数据到 csv 文件,现在我想处理我希望保留的数据
- kubernetes - 如何在 Kubernetes 负载均衡器中响应 503 错误代码
- jquery - jQuery在之后插入文本
- python - 在python中读取文本文件
- python - 使用 python 3.4 烧瓶应用程序的天蓝色部署错误
- vba - 在 VBScript 文件中集成 VBA
- java - Listview自定义适配器上的SetBackgroundResource出现错误
- c# - .NET 任务的性能指标/诊断
- data-visualization - 如何在敏锐的 IO 中创建具有多个 y 轴的图形
- python - 源代码是 Python 中的输出