SQL Server Management Studio SSMS 将所有列从 float 转换为 nvarchar
SQL Server Management Studio SSMS Convert all columns from float to nvarchar
抱歉,如果之前有人以某种形式问过这个问题(我一直在四处寻找,但没有找到完全符合我的问题的内容)。我想要做的是获取我数据库中的所有 tables 并处理这些 tables 中的所有列。我想要做的是让我的查询自动将所有浮点列更改为 nvarchar。
当我导入我的数据时,SSMS 似乎随机将我的列中的数字分配为浮点数或 nvarchars。我正在 运行 一些查询来合并很多 table,所以我需要这些列具有相同的类型。
目前,我所拥有的是,如果我手动将所有列更改为具有相同的类型,我可以合并所有内容并强制转换日期/将某些内容设为大写并且一切正常,但我想知道是否有一种在我的查询开始时将所有浮点数转换为 nvarchar 的方法。
提前致谢!
编辑:我应该补充一点,每个 table 有多种数据类型。例如,我可能正在与一个具有浮点数、日期时间和 nvarchars 的组一起工作。我需要确保所有日期时间都保持其格式,而只有浮点数变成 nvarchar。
Edit2:好的,所以所有这一切的目标是编写一个查询,该查询将查找相关 table 的部分(它们来自 excel,因此它们是给出的工作簿)。 excel 版本是 97-2003,因此每个工作表最多只能有 65000 行。因此,我的数据库表名称如下所示:
A_1
A_2
A_3
B_1
B_2
C_1
C_2
C_3
C_4
其中每个字母对应不同的工作簿。最终目标是编写一个查询,基本上是这样的:
对于表 A_1 A_2 和 A_3 中的所有列,如果列是浮点型,则将其设为 varchar。之后联合A_1A_2和A_3。合并后,UPPER(Header1)、UPPER(Header2)、CAST(Header3) AS DATE 等
我已经可以做到其中的大部分,但我不想每次都手动检查并将类型为 float 的每一列更改为类型 nvarchar。我已经编写了执行其他所有操作的查询部分。
试试这个
DECLARE @sql NVARCHAR(max)=''
SELECT @sql += 'alter table ' + TABLE_NAME + ' alter column '
+ COLUMN_NAME + ' nvarchar(50) '
FROM INFORMATION_SCHEMA.columns
WHERE DATA_TYPE = 'float'
--print @sql
EXEC Sp_executesql @sql
根据您的评论,数据是使用 Management Studio 的 Insert Data
选项导入的,该选项会打开插入数据向导。
I am importing my data from excel by right clicking the Database I'm
putting it into and clicking Import Data.
您应该能够使用向导映射步骤解决问题。
只需将 float 列的映射设置为 varchar
或 nvarchar
.
抱歉,如果之前有人以某种形式问过这个问题(我一直在四处寻找,但没有找到完全符合我的问题的内容)。我想要做的是获取我数据库中的所有 tables 并处理这些 tables 中的所有列。我想要做的是让我的查询自动将所有浮点列更改为 nvarchar。
当我导入我的数据时,SSMS 似乎随机将我的列中的数字分配为浮点数或 nvarchars。我正在 运行 一些查询来合并很多 table,所以我需要这些列具有相同的类型。
目前,我所拥有的是,如果我手动将所有列更改为具有相同的类型,我可以合并所有内容并强制转换日期/将某些内容设为大写并且一切正常,但我想知道是否有一种在我的查询开始时将所有浮点数转换为 nvarchar 的方法。
提前致谢!
编辑:我应该补充一点,每个 table 有多种数据类型。例如,我可能正在与一个具有浮点数、日期时间和 nvarchars 的组一起工作。我需要确保所有日期时间都保持其格式,而只有浮点数变成 nvarchar。
Edit2:好的,所以所有这一切的目标是编写一个查询,该查询将查找相关 table 的部分(它们来自 excel,因此它们是给出的工作簿)。 excel 版本是 97-2003,因此每个工作表最多只能有 65000 行。因此,我的数据库表名称如下所示:
A_1
A_2
A_3
B_1
B_2
C_1
C_2
C_3
C_4
其中每个字母对应不同的工作簿。最终目标是编写一个查询,基本上是这样的: 对于表 A_1 A_2 和 A_3 中的所有列,如果列是浮点型,则将其设为 varchar。之后联合A_1A_2和A_3。合并后,UPPER(Header1)、UPPER(Header2)、CAST(Header3) AS DATE 等
我已经可以做到其中的大部分,但我不想每次都手动检查并将类型为 float 的每一列更改为类型 nvarchar。我已经编写了执行其他所有操作的查询部分。
试试这个
DECLARE @sql NVARCHAR(max)=''
SELECT @sql += 'alter table ' + TABLE_NAME + ' alter column '
+ COLUMN_NAME + ' nvarchar(50) '
FROM INFORMATION_SCHEMA.columns
WHERE DATA_TYPE = 'float'
--print @sql
EXEC Sp_executesql @sql
根据您的评论,数据是使用 Management Studio 的 Insert Data
选项导入的,该选项会打开插入数据向导。
I am importing my data from excel by right clicking the Database I'm putting it into and clicking Import Data.
您应该能够使用向导映射步骤解决问题。
只需将 float 列的映射设置为 varchar
或 nvarchar
.