创建视图失败。无效的字段名称[重复]
Posted
技术标签:
【中文标题】创建视图失败。无效的字段名称[重复]【英文标题】:Failed to create view. Invalid field name [duplicate] 【发布时间】:2014-06-02 08:15:53 【问题描述】:我正在尝试保存视图。 我的几个字段属于时间戳类型。 我收到以下错误消息:
创建视图失败。无效的字段名称“Myfield.usec”。字段只能包含字母、数字和下划线,以字母或下划线开头,长度最多为 128 个字符。
字段名称对从浏览器运行查询有效,其名称为“Myfield”(“.usec”仅出现在错误消息中,可能代表其类型)。
将其转换为整数时,我没有收到任何错误。 这是一个已知的错误?我做错了什么?
谢谢
【问题讨论】:
【参考方案1】:你需要写成:
select FORMAT_UTC_USEC(timestamp) as timestamp ...
您还需要取消引用视图的嵌套记录类型字段:
SELECT utm.campaign as utm_campaign ...
【讨论】:
这行得通...谁能解释为什么时间戳需要数据类型转换而其他数据类型可以直接工作? @Pentium10 提到的两个问题实际上是相关的。时间戳在内部存储为嵌套类型,视图当前不允许嵌套结果。我们正在努力修复,但不幸的是,这并不简单。【参考方案2】:即使没有记录或时间戳字段,我们也不能使用SELECT table.*
进行视图查询。我们运行一个查询:
SELECT a.*, b.title AS cat_title
FROM [dataset1.table] AS a,
LEFT JOIN EACH [dataset2.table] AS b
ON a.cat_id = b.id
然后得到一个错误: 创建视图失败。无效的字段名称“a.id”。字段只能包含字母、数字和下划线,以字母或下划线开头,长度最多为 128 个字符。
所以我们必须从表中指定每个字段:
SELECT a.id as id, a.title as title, a.lang as lang, b.title AS author
FROM [dataset1.table] AS a,
LEFT JOIN EACH [dataset2.table] AS b
ON a.cat_id = b.id
这很不舒服,而且很好解决。
【讨论】:
以上是关于创建视图失败。无效的字段名称[重复]的主要内容,如果未能解决你的问题,请参考以下文章
sqlserver 创建视图失败,原因:ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效