如何根据逗号分隔前的第一个值从字段值单元中获取最大值单元?
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
。我不知道您可能需要的最大长度和精度。
我在 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
。我不知道您可能需要的最大长度和精度。