开发者社区 > 大数据与机器学习 > 大数据开发治理DataWorks > 正文

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 451 0
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等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。

相关产品

  • 大数据开发治理平台 DataWorks
  • 热门讨论

    热门文章

    相关电子书

    更多
    DataWorks数据集成实时同步最佳实践(含内测邀请)-2020飞天大数据平台实战应用第一季 立即下载
    DataWorks调度任务迁移最佳实践-2020飞天大数据平台实战应用第一季 立即下载
    DataWorks商业化资源组省钱秘籍-2020飞天大数据平台实战应用第一季 立即下载

    相关实验场景

    更多