Mysql外表查询过滤字符串null时有误

【StarRocks版本】2.5.2
【联系方式】: zzDuke1688
【详述】:使用外表过滤字符串 null时 无法过滤 :

 select length(extra_configs),extra_configs from tag_info where extra_configs is not null and extra_configs != 'null' limit 10;
+-----------------------+---------------+
| length(extra_configs) | extra_configs |
+-----------------------+---------------+
|                     4 | null          |
|                     4 | null          |
|                     4 | null          |
|                     4 | null          |
|                     4 | null          |
|                     4 | null          |
|                     4 | null          |
|                     4 | null          |
|                     4 | null          |
|                     4 | null          |
+-----------------------+---------------+

相关建表语句:

CREATE EXTERNAL TABLE `tag_info` (
  `tag_id` varchar(256) NOT NULL COMMENT " ",
  `reference_tag_name` varchar(512) NULL COMMENT "",
  `range` varchar(65533) NULL COMMENT "",
  `tag_slug_name` varchar(512) NULL COMMENT " name",
  `tag_name` varchar(256) NULL COMMENT " display name",
  `description` varchar(65533) NULL COMMENT "",
  `icon_url` varchar(256) NULL COMMENT " url",
  `update_type` varchar(256) NULL COMMENT "",
  `update_period` bigint(20) NULL COMMENT "",
  `rarity` bigint(20) NULL COMMENT "",
  `tms_tag_id` bigint(20) NULL COMMENT "",
  `version` bigint(20) NULL COMMENT "",
  `created_at` datetime NULL COMMENT "",
  `updated_at` datetime NULL COMMENT "",
  `last_etl_time` datetime NULL COMMENT "",
  `live_time` datetime NULL COMMENT "",
  `twitter_url` varchar(256) NULL COMMENT "",
  `extra_configs` varchar(5000) NULL COMMENT ""
) ENGINE=MYSQL 
COMMENT "MYSQL"
PROPERTIES (
"host" = "",
"port" = "",
"user" = "",
"password" = "",
"database" = "",
"table" = ""
);

mysql:

CREATE TABLE `tag_info` (
  `tag_id` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'reference tag name的sha256',
  `reference_tag_name` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `range` text COLLATE utf8mb4_unicode_ci,
  `tag_slug_name` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `tag_name` varchar(256) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `description` text COLLATE utf8mb4_unicode_ci,
  `icon_url` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `update_type` varchar(256) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `update_period` bigint unsigned DEFAULT NULL,
  `rarity` bigint unsigned DEFAULT NULL,
  `tms_tag_id` bigint unsigned DEFAULT NULL,
  `version` bigint unsigned DEFAULT NULL,
  `created_at` datetime(3) DEFAULT NULL,
  `updated_at` datetime(3) DEFAULT NULL,
  `last_etl_time` datetime(3) DEFAULT NULL,
  `address` varchar(256) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `twitter_url` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `live_time` datetime(3) DEFAULT NULL,
  `last_generate_time` datetime(3) DEFAULT NULL,
  `extra_configs` json DEFAULT NULL,
  PRIMARY KEY (`tag_id`),
  KEY `idx_tag_info_test_tms_tag_id` (`tms_tag_id`),
  KEY `idx_tag_info_test_address` (`address`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ;

extra_configs is not null试试

单独使用

where extra_configs is not null 

是可以过滤掉NULL 的数据,但是因为表中有脏数据 字符串的null 所以需要这样:

where extra_configs is not null and extra_configs != 'null' 

当使用这个条件时查询结果仍然包含 字符串类型的null

收到 我们排查一下,谢谢