表值函数和视图之间有什么区别? 有没有什么事情可以用1来完成,这与另一个很难或不可能做到。 还是差别在于效率?
我想创build一个视图,我希望列只能是真或假。 但是,似乎无论我做什么,SQL Server(2008)都认为我的位列可以以某种方式为空。 我有一个名为“Product”的表,其中列“状态”是INT, NULL 。 在一个视图中,我想为Product中的每一行返回一行,如果Product.Status列等于3,则BIT列设置为true,否则位字段应为false。 示例SQL SELECT CAST( CASE ISNULL(Status, 0) WHEN 3 THEN 1 ELSE 0 END AS bit) AS HasStatus FROM dbo.Product 如果我将这个查询保存为一个视图并查看对象资源pipe理器中的列,则HasStatus列设置为BIT, NULL 。 但它不应该是NULL。 是否有一些神奇的SQL技巧,我可以用来强制这个列NOT NULL 。 请注意,如果我在CASE周围删除了CAST() ,则该列将被正确设置为NOT NULL ,但是该列的types将设置为INT ,这不是我想要的。 我希望它是BIT 。 🙂
我希望PostegreSQL放松一下。 每次我想改变一个视图中使用的列,似乎我必须删除视图,更改字段,然后重新创build视图。 我可以放弃额外的保护,只是告诉PostgreSQL让我改变领域,然后找出调整视图? 澄清:我明白什么是一个观点。 实际上,这是因为这个视图就像一个子查询,我希望能够改变底层的表格,并让视图接受这个变化。 假设我有以下几点: CREATE TABLE monkey ( "name" character varying(50) NOT NULL, ) CREATE OR REPLACE VIEW monkey_names AS SELECT name FROM monkey 我真的只想在迁移脚本中执行以下操作, 而不必删除并重新创build视图。 ALTER TABLE monkey ALTER COLUMN "name" character varying(100) NOT NULL
由于几个我没有自由讨论的理由,我们正在定义一个对我们的Sql Server 2005数据库的看法,如下所示: CREATE VIEW [dbo].[MeterProvingStatisticsPoint] AS SELECT CAST(0 AS BIGINT) AS 'RowNumber', CAST(0 AS BIGINT) AS 'ProverTicketId', CAST(0 AS INT) AS 'ReportNumber', GETDATE() AS 'CompletedDateTime', CAST(1.1 AS float) AS 'MeterFactor', CAST(1.1 AS float) AS 'Density', CAST(1.1 AS float) AS 'FlowRate', CAST(1.1 AS float) AS 'Average', CAST(1.1 AS float) AS 'StandardDeviation', CAST(1.1 AS float) AS […]