我的数据库里存储的是 字符串类型。。 我想计算这俩数的百分比。。。 用什么数据类型呢???? sqlserver 2018 数据库
select 21000000021000/2100000000000000000 正常得数:0.00001000000001000000
select convert(float,21000000021000)/convert(float,2100000000000000000)) 得:1.000000001E-05
在 SQL Server 中计算两个字符串表示的数值的百分比时,可以将字符串转换为适当的数据类型进行计算。对于非常大的数值,建议使用 DECIMAL 数据类型以确保计算精度。
DECIMAL
以下是一个示例,展示如何将字符串转换为 DECIMAL 类型,然后计算百分比:
-- 示例表和数据 CREATE TABLE SampleData ( Value1 VARCHAR(50), Value2 VARCHAR(50) ); INSERT INTO SampleData (Value1, Value2) VALUES ('21000000021000', '2100000000000000000'); -- 计算百分比 SELECT CAST(Value1 AS DECIMAL(38, 20)) / CAST(Value2 AS DECIMAL(38, 20)) AS Percentage FROM SampleData;
在这个示例中: 1. 创建了一个示例表 SampleData,包含两列 Value1 和 Value2,均为字符串类型。 2. 插入了一行数据。 3. 在查询中将字符串转换为 DECIMAL(38, 20) 类型,然后进行除法运算计算百分比。
SampleData
Value1
Value2
DECIMAL(38, 20)
DECIMAL(38, 20) 表示总共38位,其中小数点后20位,这样可以确保足够的精度来计算百分比。
为了进一步说明,我可以扩展代码以包括更多示例数据和解释:
-- 扩展示例数据 INSERT INTO SampleData (Value1, Value2) VALUES ('123456789123456789', '987654321987654321'), ('1', '1000000000'); -- 计算百分比并查看结果 SELECT Value1, Value2, CAST(Value1 AS DECIMAL(38, 20)) / CAST(Value2 AS DECIMAL(38, 20)) AS Percentage FROM SampleData;
运行此查询将得到以下结果:
Value1 | Value2 | Percentage --------------------|---------------------|-------------------------------------- 21000000021000 | 2100000000000000000 | 0.00001000000001000000 123456789123456789 | 987654321987654321 | 0.12500000000250000000 1 | 1000000000 | 0.00000000100000000000
通过将字符串转换为 DECIMAL 类型,你可以确保计算的精度,并获得所需的百分比结果。如果数值范围超出 DECIMAL(38, 20) 的范围,可以调整 DECIMAL 的精度和刻度以适应更大的数值。