【问题标题】:Set SQL Server Management Studio to import numbers as non-float types设置 SQL Server Management Studio 以将数字导入为非浮点类型
【发布时间】:2018-03-02 18:31:41
【问题描述】:

在 SQL Server 中,如果将float 格式数据直接转换为varcharnvarchar,则会得到科学计数法垃圾,如以下问题所述:How to convert float to varchar in SQL Server

我使用的是:cast(cast([Fieldname] as numeric(18,0)) as varchar)

这很好,但如果我忘记这样做,可能会在比较或加入时导致不可见的错误,特别是如果我让 SQL Server 在我的查询中隐式进行转换。

我从来没有故意将任何整数设置为float,但是当您使用导入/导出向导时,SSMS 默认将数字数据导入为float。我知道您可以在每次导入时手动更改它(或者如果您使用 SSIS,您可以这样设置批次,但我无权访问 SSIS)。

那么有没有办法全局更改 SSMS 的默认导入类型,使其默认将数字字段设置为 numeric

【问题讨论】:

  • SSIS导入/导出向导不是SSMS,SSMS也不是sql引擎。听起来您没有使用 SSMS 中的任何功能来导入数据。简短的回答是否定的,您不能更改 SSIS 向导的默认设置。您可以通过 SSMS 在目标数据库中创建对象,并通过创建表设置正确的数据类型,然后将 SSIS 向导指向该对象,该对象将继承您设置的数据类型。
  • @Random_User 所以当你在 SSMS 中启动向导时,它应该被称为 SSIS 向导?

标签: sql-server tsql


【解决方案1】:

答案最终是以不同的方式处理这个问题。在我导入数据时,我一直让导入/导出向导创建一个新表,在这种情况下,数据以自动确定的格式导入。

如果我改为让导入/导出向导将行附加到现有表,则数据将导入现有表用于相关字段的任何格式,即我在创建表时设置的格式。这样做可以消除以错误格式导入的任何危险。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 2010-11-10
    相关资源
    最近更新 更多