我创建了以下视图;
CREATE VIEW Artist_by_Rank
AS
SELECT Artist, Genre FROM Artists
UNION
SELECT Artist, Change FROM Albums
结果是命令创建成功。
当我尝试使用SELECT * FROM Artist_by_Rank
查看此视图时,收到以下消息
Msg 245,Level 16,State 1,Line 1
将varchar值'Pop'转换为数据类型int时,转换失败。
Pop
是一个文本,它是Genre
列的一部分。
在此消息之后,我检查了视图中
列的数据类型Artist (varchar(60), not null)
Genre (int, not null)
因此,要更正错误,我正在尝试将列Genre
从int
更改为varchar
,但我收到如下错误消息;
ALTER VIEW Artist_by_Rank
CAST(Genre as varchar(15))
Msg 102,Level 15,State 1,Procedure Artist_by_Rank,Line 2
“CAST”附近的语法不正确
答案 0 :(得分:0)
ALTER VIEW
不会以递增方式工作,您必须按照自己的方式重新创建整个视图,例如:
CREATE VIEW Artist_by_Rank
AS
SELECT Artist, CAST(Genre as varchar(15)) as Genre_char FROM Artists
UNION ALL
SELECT Artist, Change FROM Albums
抱歉,尝试将强制转换结果别名化为另一个名称,并查看数据类型分配是否成功。如果是,您可以使用所需的别名再次运行它(将genre_char更改为流派)