gpt4 book ai didi

sql-server - 创建 SQL Server View 时可以指定列类型吗?

转载 作者:行者123 更新时间:2023-12-02 11:55:03 24 4
gpt4 key购买 nike

为了强制执行更严格的类型安全性并更容易地检测错误,我想明确指定 View 的列类型。

但是虽然这有效:

CREATE VIEW [dbo].[myview] (
[a],
[b],
[c]
)
AS
SELECT 'a1', 'b1', 'c1';

失败:

CREATE VIEW [dbo].[myview] (
[a] nvarchar(32) NOT NULL,
[b] nvarchar(32) NOT NULL,
[c] nvarchar(32) NOT NULL
)
AS
SELECT 'a1', 'b1', 'c1';

有正确的语法吗?

最佳答案

SQL Server 必须推导类型 - 但如果需要,您可以强制执行:

CREATE VIEW [dbo].[myview] (
[a],
[b],
[c]
)
AS
SELECT
CONVERT(nvarchar(32),'a1'),
CONVERT(nvarchar(32),'b1'),
CONVERT(nvarchar(32),'c1');

至于 null/非 null 方面,SQL Server 必须再次推断这一点。如果您知道某个列将为 not null,但 SQL Server 得到的结果不正确,您可以将其包装在带有非空第二个参数的 ISNULL 语句中:

SELECT ISNULL(ColumnSQLServerThinksCanBeNull,'abc')

然后它将将该列描述为not null。第二个值并不重要(毕竟,这是我自己的断言,即该列永远不会为空),只要它是与该列兼容的类型即可。

关于sql-server - 创建 SQL Server View 时可以指定列类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13874719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com