Sql server 能否在SQL Server 2000中更改视图中的列长度?

Sql server 能否在SQL Server 2000中更改视图中的列长度?,sql-server,tsql,sql-server-2000,Sql Server,Tsql,Sql Server 2000,不确定这是否允许,但如果允许,有人能告诉我T-SQL是什么吗?我试过以下方法,但没有效果 alter [View_Name] alter column [Coln_Name] [New size/length] not null GO 感谢您的帮助。谢谢 不直接 这是从列表达式自动派生的。您可以将视图中的表达式转换为特定的数据类型。您需要更改基础表中的列长度,或更改构成视图的SELECT语句,以转换或转换列为不同的长度数据类型。视图是查看其他表中数据的方法;通常,数据只是底层表中的任何内容,因

不确定这是否允许,但如果允许,有人能告诉我T-SQL是什么吗?我试过以下方法,但没有效果

alter [View_Name]
alter column [Coln_Name] [New size/length] not null
GO
感谢您的帮助。谢谢

不直接


这是从列表达式自动派生的。您可以将视图中的表达式转换为特定的数据类型。

您需要更改基础表中的列长度,或更改构成视图的SELECT语句,以转换或转换列为不同的长度数据类型。

视图是查看其他表中数据的方法;通常,数据只是底层表中的任何内容,因此您需要更改那里的列

但是,您可以使用视图执行诸如cast()或convert()之类的操作;这通常是个坏主意,因为每次使用视图时都需要重新获取数据,而且这些操作会增加开销。在视图的设计中,您可以决定强制转换为另一种数据类型,或者执行您想要的任何转换,但这会带来开销,并且不会改变原始数据

如果您知道当前视图选择的内容,可以使用以下内容:

Alter view Viewname[cloumn] as Select cast(original_data as varchar(n)) from Original_Table

我也遇到了同样的情况。我所做的是:

  • 更改视图查看的表中的列大小

  • 创建脚本以重新创建视图(如果您还没有脚本)

  • 删除视图

  • 使用脚本重新创建视图


  • 之后,视图中的列大小与我对基础表所做的更改相同。

    您不能更改视图中的列大小,因为视图是从其他表派生的。因此,如果需要更改列大小,请更改表的列大小。要更改列大小,请使用ALTER TABLE as:

    更改表格[表格名称]

    更改列[列名称]数据类型(大小)


    更改列大小后,您可能需要删除视图并重新创建它。

    如果视图中显示的长度与基础表不匹配,请删除并重新创建视图

    使用类似的方法来研究表和视图中的列长度

    SELECT o.[name], *
    FROM sys.all_columns c
    INNER JOIN sys.objects o on o.[object_id]=c.[object_id]
    WHERE c.[name] = 'OML'
    -- AND c.[max_length]=11
    ORDER BY O.[name];
    

    要获取拖放和创建sql,我使用SSMS并右键单击上下文菜单(在对象资源管理器中的视图上),然后转到“脚本视图为”和“拖放并创建为”。

    长度不是来自基础表吗?视图实际上只是一个命名的即席查询。如果要更改特定字段的大小,则需要修改基础查询。这感觉像是在试图向视图插入数据?这个问题的动机是什么?