dataworks中报期望boolean表达式错误

在dataworks中,执行以下sql语句报语义分析异常-期望boolean表达式


select *
from table_name
where name || age is null;

其中name数据类型为string age为Int类型, 请问各位大佬,为什么会报这个错误?根本原因是什么?除了使用cast进行转换数据类型还有别的解决方法吗?

展开
收起
游客nfk3bws5w4wng 2023-03-06 18:19:00 513 分享 版权
5 条回答
写回答
取消 提交回答
  • 天下风云出我辈,一入江湖岁月催,皇图霸业谈笑中,不胜人生一场醉。

    原因:DataWorks的写入模式使用了SDK模式,建Hologres表时存在不支持的数据类型,比如JSONB等,该模式下支持的数据类型较少。

    2023-03-07 08:44:31
    赞同 展开评论
  • 发表文章、提出问题、分享经验、结交志同道合的朋友

    你好,楼主;

    使用了字符串连接符 || 来连接 name 和 age 字段,并使用 is null 来进行过滤,这是不合法的语法,所以导致了语义分析异常。

    如果你想要检查 name 和 age 是否都为 null,可以使用逻辑运算符 and 来连接条件,如下所示:

    select * from table_name where name is null and age is null;
    

    如果你想要检查 name 和 age 是否有一个为 null,可以使用逻辑运算符 or 来连接条件,如下所示:

    select * from table_name where name is null or age is null;
    
    
    2023-03-07 08:38:38
    赞同 展开评论
  • 在SQL中,||符号用于字符串连接,而不是用于判断是否为null。 您可以使用IS NULL或IS NOT NULL来判断一个值是否为null。 正确的SQL语句应该是: select * from table_name where name is null or age is null;

    2023-03-07 08:38:40
    赞同 展开评论
  • 坚持这件事孤独又漫长。
    • 这个 SQL 语句是有问题的,因为字符串和数字不能拼接在一起,而 "|| "是字符串的连接运算符。

    可以使用以下 SQL 语句来检查这个问题:

    SELECT * FROM table_name WHERE name IS NULL OR age IS NULL;
    
    • 此查询将返回所有在 "table_name" 表中,“name” 或 “age” 一列中含有 null 值的行,从而避免了语义分析异常。
    2023-03-06 20:16:15
    赞同 展开评论
  • GitHub https://github.com/co63oc/cloud

    或使用or关键字

    2023-03-06 19:04:13
    赞同 展开评论

DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。

还有其他疑问?
咨询AI助理