Sql server 如何计算小数点后的位数

Sql server 如何计算小数点后的位数,sql-server,sql-server-2008,tsql,Sql Server,Sql Server 2008,Tsql,在SQL Server 2008中,如何计算小数点后的位数 例:1.999999495049E-05 我需要知道小数点后有多少位。如果你想计算小数点后的位数,那么下面的查询就可以了 SELECT LEN(SUBSTRING(cast(COLUMNNAME as varchar), CHARINDEX('.',COLUMNNAME ) + 1, 1000)) AS DIGITSAFTERDECIMALPOINTS FROM TABLENAME 希望这有帮助 如果要计算小数点后的位数,则下面的查

在SQL Server 2008中,如何计算小数点后的位数

例:
1.999999495049E-05


我需要知道小数点后有多少位。

如果你想计算小数点后的位数,那么下面的查询就可以了

SELECT LEN(SUBSTRING(cast(COLUMNNAME as varchar), CHARINDEX('.',COLUMNNAME ) + 1, 1000)) AS DIGITSAFTERDECIMALPOINTS 
FROM TABLENAME

希望这有帮助

如果要计算小数点后的位数,则下面的查询可以正常工作

SELECT LEN(SUBSTRING(cast(COLUMNNAME as varchar), CHARINDEX('.',COLUMNNAME ) + 1, 1000)) AS DIGITSAFTERDECIMALPOINTS 
FROM TABLENAME

希望这有帮助

哇,这太棘手了。这种逻辑应该能让你达到目的:

DECLARE @Value float(53) = 1.99999999495049E-5;
DECLARE @StringValue varchar(40) = CONVERT(varchar(40), @Value, 2);
DECLARE @ELocation int = CHARINDEX('e', @StringValue);
DECLARE @ExponentDigits int = 0 - CAST(SUBSTRING(@StringValue, @Elocation + 1, 40) AS int);
DECLARE @MantissaString varchar(40) = REPLACE(SUBSTRING(@StringValue, 1, @ELocation - 1), '.', '');
DECLARE @NumberOfMantissaDigits int = LEN(CAST(CAST(REVERSE(@MantissaString) AS bigint) AS varchar(20)));

SELECT @ExponentDigits + @NumberOfMantissaDigits - 1 AS NumberOfDecimalPlaces;

我把它们都留作单独的陈述,这样你就可以知道发生了什么。我可以用一行表达式来表达,但如果以后我想试着理解它,我会不寒而栗。

哇,这真是太棘手了。这种逻辑应该能让你达到目的:

DECLARE @Value float(53) = 1.99999999495049E-5;
DECLARE @StringValue varchar(40) = CONVERT(varchar(40), @Value, 2);
DECLARE @ELocation int = CHARINDEX('e', @StringValue);
DECLARE @ExponentDigits int = 0 - CAST(SUBSTRING(@StringValue, @Elocation + 1, 40) AS int);
DECLARE @MantissaString varchar(40) = REPLACE(SUBSTRING(@StringValue, 1, @ELocation - 1), '.', '');
DECLARE @NumberOfMantissaDigits int = LEN(CAST(CAST(REVERSE(@MantissaString) AS bigint) AS varchar(20)));

SELECT @ExponentDigits + @NumberOfMantissaDigits - 1 AS NumberOfDecimalPlaces;

我把它们都留作单独的陈述,这样你就可以知道发生了什么。我可以把它全部放在一个单行表达式中,但如果稍后尝试理解它,我会不寒而栗。

如果您想计算Teradata中小数点后的位数

SELECT LENGTH(SUBSTRING(COLUMN_NAME FROM POSITION('.' IN COLUMN_NAME) + 1 FOR 1000))
FROM TABLE

如果要计算Teradata中小数点后的位数

SELECT LENGTH(SUBSTRING(COLUMN_NAME FROM POSITION('.' IN COLUMN_NAME) + 1 FOR 1000))
FROM TABLE

这对于浮点型字段来说并不明显。不能改用定点类型吗?字段的类型是什么<代码>浮动<代码>十进制?这对于浮点型字段来说并不明显。不能改用定点类型吗?字段的类型是什么<代码>浮动<代码>十进制?