如何根据逗号分隔前的第一个值从字段值单元中获取最大值单元?

How to get max Value Unit from field Value Unit based on first value before comma separated?

我在 SQL 服务器 2012 上工作我遇到问题:我无法根据逗号前的第一个值从值单元中获取第一个最大值。

例如这个值单位如下:

1.89, 2.625, 3.465

我将在逗号之前得到第一个值,分隔为 1.89 然后如果这个数字是最大值 return 完整数字 存在于价值单元

create table #finaltable
(
partid  int,
ValueUnit nvarchar(50)
)
insert into #finaltable(partid,ValueUnit)
values
(2532,'1.71, 2.375, 3.135'),
(2532,'1.89, 2.625, 3.465')
select * from #finaltable

如何根据逗号分隔前的第一个值从字段 ValueUnit 中获取第一个最大值?

预期结果 returned :

1.89, 2.625, 3.465

因为 1.89 是 1.71 的最大数字,所以我 return 编辑了完整数字

我同意评论,你的设计很糟糕。有关更多信息,您还应该阅读 "Is storing a delimited list in a database column really that bad?".

但是,您可以使用 patindex() 获取逗号的位置,然后使用 left() 提取第一个数字表示。 convert() 它给一些 decimal,按它排序并占据 TOP 1 行。

SELECT TOP 1
       *
       FROM #finaltable
       ORDER BY convert(decimal(4, 3), left(valueunit, patindex('%,%', valueunit) - 1)) DESC;

您可能需要将转换调整为 decimal。我不知道您可能需要的最大长度和精度。