sql-server – 创建SQL Server视图时是否可以指定列类型?
发布时间:2020-05-28 15:16:24 所属栏目:MsSql 来源:互联网
导读:为了实现更严格的类型安全性并使其更容易检测错误,我想明确指定我的视图的列类型. 但是这虽然有效: CREATE VIEW [dbo].[myview] ( [a], [b], [c])ASSELECT a1, b1, c1; 这失败了: CREATE VIEW [dbo].[myview] ( [a] nvarchar(32) NOT NULL,
|
为了实现更严格的类型安全性并使其更容易检测错误,我想明确指定我的视图的列类型. 但是这虽然有效: 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','c1';
这有正确的语法吗? 解决方法SQL Server必须推断出类型 – 但是如果需要,你可以强迫它:CREATE VIEW [dbo].[myview] (
[a],[c]
)
AS
SELECT
CONVERT(nvarchar(32),'a1'),CONVERT(nvarchar(32),'b1'),'c1');
至于null / non-null方面,SQL Server必须推断出这一点.如果您知道的列不是null但SQL Server不正确,则可以将其包装在带有非null第二个参数的ISNULL语句中: SELECT ISNULL(ColumnSQLServerThinksCanBeNull,'abc') 然后它会将列描述为非null.第二个值无关紧要(毕竟,这是关于我自己的断言,列永远不会为null),只要它是列的兼容类型. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql – 对于avg运算符,操作数数据类型时间无效…?
- syntax – 用于截断IBM DB2中的表的SQL查询
- sql – 在一个语句中选择两个表的连接中的第一行
- .Net+SQL Server企业应用性能优化笔记3——SQL查询语句
- sql-server – SQL查询,执行计划和“并行”
- database-design – 只读取数据库中类似日志的表中的新行
- SQL Server 系统存储过程 中文说明
- sql-server – 是否可以强制优化器消除此分区视图中不相关的
- 数据库 – OrbitDB,Gun,HyperDrive和BigchainDB如何相互区别
- 如何验证会员系统中用户的邮箱是否真实存在
