我有一个以磅和盎司为单位的重量列
例如,我们在列中有这样的数据:
8 lb 8.863 oz
6900 lb 7.495 oz
有人可以帮我把lb+oz克换算成克吗?
Birthweight = Visit.WeightField -- (TableName.FieldName)
我新来的,我们需要乘以454,但这是行不通的。
请帮助我更改上述SQL行中的Weightfield列。
例如,千克到克的转换如下
BirthWeight= ISnull(cast((cast(rtrim(replace(Visit.WeightField,'kg','')) as float) * 1000) as varchar(max)),'0')
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
要将磅(lb)和盎司(oz)转换为克(g),你可以遵循以下步骤:
首先,知道基本转换率:
然后,编写一个SQL表达式来处理这个转换。对于你给出的数据格式(例如,8 lb 8.863 oz
),我们需要先提取出磅和盎司的数值,然后分别转换它们,并相加以得到总克数。
下面是一个可能的SQL转换示例,假设你的数据列Visit.WeightField
中存储的是类似'8 lb 8.863 oz'这样的字符串格式:
DECLARE @WeightField NVARCHAR(50) = '8 lb 8.863 oz'; -- 这里是你的字段值,实际应用中应替换为Visit.WeightField
-- 提取磅和盎司的数值
DECLARE @lbs FLOAT = CAST(SUBSTRING(@WeightField, CHARINDEX(' ', @WeightField) - PATINDEX('%[0-9]%', REVERSE(LEFT(@WeightField, CHARINDEX(' ', @WeightField)))) + 1, CHARINDEX(' ', @WeightField) - CHARINDEX(' ', @WeightField) - PATINDEX('%[0-9]%', REVERSE(LEFT(@WeightField, CHARINDEX(' ', @WeightField)))) - 1) AS FLOAT);
DECLARE @ozs FLOAT = CAST(RIGHT(@WeightField, CHARINDEX('.', RIGHT(@WeightField, LEN(@WeightField) - CHARINDEX(' ', REVERSE(@WeightField)) + 1)) - 1) AS FLOAT);
-- 转换并相加
DECLARE @grams FLOAT = (@lbs * 453.592) + (@ozs * 28.3495);
SELECT CAST(@grams AS VARCHAR(MAX)) AS BirthWeight;
这段代码首先定义了一个变量@WeightField
来模拟你的字段值,然后通过字符串操作提取出磅和盎司的数值,进行转换计算后,最后输出转换成克的结果。
如果你需要在查询中直接使用,可以尝试将上述逻辑封装进一个用户自定义函数(UDF)或者直接嵌入到你的查询语句中,但请注意,直接在查询中使用这么复杂的字符串解析可能会对性能有影响,特别是当处理大量数据时。因此,最佳实践可能是先对数据进行预处理,将其转换为更易于计算的结构(比如分成两列:一列磅、一列盎司),然后再执行转换计算。