sql-server - 如何列出数据库中具有最大小数位的所有浮点列?
问题描述
我正在尝试列出数据库中具有最大小数位的所有浮点列。我的最终目标是以正确的比例和精度将这些浮点列转换为十进制。
我可以使用下面列出所有浮动列
SELECT A.table_name,
column_name,
data_type
FROM DB1.information_schema.columns A
INNER JOIN DB1.information_schema.tables B
ON A.table_name = B.table_name
WHERE table_type = 'BASE TABLE'
AND data_type = 'Float'
ORDER BY A.table_name
并查看单个浮点列的最大小数位,如下所示
SELECT MAX
(CASE Charindex('.', COLUMN1)
WHEN 0 THEN 0
ELSE
Len (Cast(Cast(Reverse(CONVERT(VARCHAR(50), COLUMN1, 128)
) AS FLOAT) AS BIGINT))
END) AS MAX_LENGTH
FROM DB1.dbo.TABLE1
我正在尝试将两者的结果结合起来,以便得到以下结果。
table_name,
column_name,
data_type,
MAX_LENGTH
如何动态获取第二个查询中所有列的结果并将其与第一个查询连接?
谢谢
解决方案
你试图做的事情根本无法解决。
Float
不应该存储精确值,为此目的decimal
/numeric
类型存在。Float
非常适合存储不适合任何“精确”类型的巨型值。
我给你一个例子。您可以轻松地适应 float 这些值:
create table dbo.fl(col float);
insert into dbo.fl
values(2e100), (2e-100);
您可以发明的任何解决方案都将因这些值而失败。的概念float
是:它可以存储无法存储在其他类型中的巨大值。
推荐阅读
- javascript - 将模板文字与替换一起使用
- r - 转置 data.frame 并计算每列的非 NA 值
- bash - 使用 sed 从具有特殊字符的字符串中删除子字符串
- java - Java使用(管道)“... -f nut - | ffmpeg -i - ...”执行ffmpeg命令只是挂起
- php - 绕过会话验证 php
- c# - Visual Studio 2017 - 从 xaml 自动生成代码中的方法?
- python - 使用轮文件通过 pip 安装时强制执行包顺序
- r - 如何在 PowerBI 中过滤 R 表达式
- zurb-foundation - 基础选项卡展开以填充容器中所有可用的水平空间?
- git - git merge 覆盖内容