dataworks中报期望boolean表达式错误[阿里云DataWorks]

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


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

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

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
4 条回复 A 作者 M 管理员
  1. 原因:DataWorks的写入模式使用了SDK模式,建Hologres表时存在不支持的数据类型,比如JSONB等,该模式下支持的数据类型较少。

  2. 你好,楼主;

    使用了字符串连接符 || 来连接 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;

  3. 在SQL中,||符号用于字符串连接,而不是用于判断是否为null。 您可以使用IS NULL或IS NOT NULL来判断一个值是否为null。 正确的SQL语句应该是: select * from table_name where name is null or age is null;

    • 这个 SQL 语句是有问题的,因为字符串和数字不能拼接在一起,而 “|| “是字符串的连接运算符。

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

    SELECT * FROM table_name WHERE name IS NULL OR age IS NULL;

    • 此查询将返回所有在 “table_name” 表中,“name” 或 “age” 一列中含有 null 值的行,从而避免了语义分析异常。
  4. 或使用or关键字