【问题标题】:Pasting SQL decimal fields into EXCEL将 SQL 十进制字段粘贴到 EXCEL 中
【发布时间】:2020-07-07 15:38:02
【问题描述】:

我对 excel 和 SQL 的数据格式有疑问。

我在 SQL 中有一个数据类型为 DECIMAL(18,0) 的列,当我尝试将 SQL 结果粘贴到 SQL 中时。在 excel 中,sql 结果的最后 3 位被替换为 0。

例子

在 SQL 中,结果集有一个名为 session id 的列,并且有十进制数字,例如 119,597,417,242,309,670
329,621,151,415,350,454
134,460,940,261,658,890

...但是当我将其粘贴到 Excel 中时,数字看起来像

我尝试将 EXCEL 中的格式更改为粘贴为文本,但是,结果集的整个格式被扭曲(并且只有第一列被正确粘贴,没有 0) 由于字段太多,我无法继续将 SQL 中的所有字段从十进制转换为整数。

你能指导我做什么吗?

【问题讨论】:

    标签: teradata teradata-sql-assistant


    【解决方案1】:

    Excel 中的数字字段仅限于 15 位精度。

    Tools / Options / Data Format 下的 SQL Assistant 中,您可以要求将大的 Decimal(和 BIGINT)字段显示为文本,以便进行此类复制/粘贴。或者您可以告诉 SQL 助手另存为或导出为 Excel 格式。

    对于其他工具,您可以在 SELECT 中将数据显式格式化和强制转换为 VARCHAR,以便将其作为文本检索。

    【讨论】:

    • 谢谢弗雷德!我尝试了您的第一个选项,但它不起作用!:(我单击了选项选项卡中的框,但之后当我粘贴回 excel 时,它是相同的(最后 3 位数字转换为 0)
    • 您是否重新运行了查询?此设置适用于设置选项后显示的新答案集。
    • 没关系。看起来最近版本的 Excel 决心“帮助”将任何看起来像数字的东西格式化为“数字”。您可能需要使用 Excel 的“使用文本导入向导粘贴”功能而不是简单的粘贴。数据应以制表符分隔,您可以单击相关列并将格式从“常规”更改为“文本”。或使用保存/导出选项创建 Excel 电子表格(应将这些列格式化为文本)。或者在您的 SELECT 中使用诸如 ''''||CAST(col AS VARCHAR(25)) 之类的东西在文本值前面放置一个撇号以使 Excel 满意。
    【解决方案2】:

    您可以做几件事。我会列出4个。 选择最适合您的。

    1. 首先在文本编辑器(如记事本)中粘贴,在此处搜索/替换,然后粘贴。
    2. 将要粘贴的数据范围设置为“文本”,然后粘贴。之后,您可以搜索/替换,并更改为正确的格式。
    3. 更改 Windows 的区域设置以匹配您拥有的数据。
    4. 您可以从 SQL 查询生成公式,而不是浮点数。所以生成像=5/10 这样的文本,而不是0.50,5。无论您的区域设置如何,Excel 都会正确提取。

    【讨论】:

    • 感谢您的回复!在第一个,你能详细说明一下吗?我在记事本中粘贴了我的结果集(包含 8 个字段)。我现在要搜索和替换什么?我不确定你在这里的意思..在 8 列中,有 4 列是十进制类型...我应该选择那些并将它们粘贴为文本吗?我试过了,它仍然给我同样的结果
    猜你喜欢
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    相关资源
    最近更新 更多