繁体   English   中英

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

[英]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 之前获得第一个值,然后如果这个数字是最大值,则返回完整的数字存在于价值单元上

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 中获取第一个最大值?

预期结果返回:

1.89, 2.625, 3.465

因为 1.89 是 1.71 中的最大数字,所以我返回了完整数字

我同意评论,你的设计很糟糕。 有关更多信息,您还应该阅读“在数据库列中存储分隔列表真的那么糟糕吗?” .

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM