我有一张表,里面有这么多文件
FileSize
68 bytes
122.80 Kb
23.5 Mb
1.2 Gb
我需要选择以mb为单位的结果,所以结果看起来像
Converted FileSize
0.000068
0.1228
23.5
1200
这样可以正确地将结果拆分
WITH Splitted AS
(
SELECT CAST(N'<x>' + REPLACE(REPLACE(REPLACE(REPLACE(REPLACE([File Size],N' ',N' '),N'&',N'&'),N'<',N'<'),N'>',N'>'),N' ',N'</x><x>') + N'</x>' AS XML) testXML
FROM Attachment
)
SELECT testXML.value('/x[1]','float') AS Number
,testXML.value('/x[2]','nvarchar(max)') AS metric
FROM Splitted
到
Size Metric
68 bytes
122.8 Kb
23.5 Mb
1.2 Gb
有没有办法在sql中基于“metric”列值对“size”列值进行转换?
2条答案
按热度按时间insrf1ej1#
一种方法是
CHARINDEX
获取空间的位置并将值拆分为两列。然后你用一个CASE
表达式将值乘以适当的量:euoag5mw2#
根据上面我标记的答案,这就是我所用的。