我制作了一个SELECT INTO
表,然后使用该表,在我看来这是一种无效数据。该列只有空值,但在弹出窗口中该列不为空。
SQL Server中的void列类型是什么意思?因为我从未见过。
SELECT INTO
语句:
SELECT DISTINCT
Item,
NULL AS ItemDescription,
NULL AS Marca,
NULL AS Categoria,
NULL AS SubCategoria
INTO
setup.MaestroProductos
FROM
temp.datos
WHERE
Item NOT IN ('servicio', 'flete')
AND Categoria NOT IN ('servicios', 'activos', 'activo fijo')
ORDER BY
Item
答案 0 :(得分:2)
好像您在表中插入了文字NULL
。
如果将下面的SQL放入SSMS,您会注意到NullColumn
被intellisense定义为“ void”列(有趣的是还被定义为“ not null”):
USE Sandbox;
GO
SELECT NULL AS NullColumn,
1 AS IntColumn
INTO MyTable;
GO
SELECT NullColumn,
IntColumn
FROM dbo.MyTable;
GO
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'MyTable';
GO
DROP TABLE dbo.MyTable;
这是因为在同一会话中,SSMS无法派生文字NULL
的数据类型(甚至是Nullability);但是创建的列最终将成为可为空的int
。
如果您运行SQL直到并包含INTO
语句,然后创建一个新连接并检查数据类型(在刷新intellisense之后),那么您会注意到它显示为可为空的{{1} }:
要回应OP的评论“因为在设计器中,我将列定义为整数类型,而在图像的弹出窗口中将其定义为void类型。” 我无法复制此行为。如果不定义数据类型,则只能这样做。如果OP确实是 定义类型,那么我们需要他们的脚本来复制问题。