在一次数据处理过程中,发现 有几条数据不能直接存储到pgsql 中,mysql 清洗数据,最后落地pgsql中, 通过报错 该数据字段中 存在ckar(0) 字符.
经过百度 Google 发现 ,如果字符串中包含了 char(0) 的字符,字符后面内容是显示不出来的
--示例
select
concat('1',char(0),'2'), --隐藏了数字2
replace(concat('1',char(0),'2'),char(0),'$') --替换char(0),后面的数字显示出来了
;
SELECT
real_name, --原字段数据查询显示
replace(ifnull(real_name,null),char(0),'$') as real_name, --替换了char(0),之后显示的数据
SUBSTRING_INDEX(real_name,char(0),1) as real_name, --截取char(0)之前的数据
LENGTH(real_name), --截取之前的字符长度
LENGTH(SUBSTRING_INDEX(real_name,char(0),1)) --处理数据之后的长度
FROM labourer where id = 4611857465692091119
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNCM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPB5EeRRVT6VEROBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZwpmLxEDNxAjMxQTM5AjNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
- hive中处理包含char(0)字段数据
select
real_name,
substring_index(real_name,chr(0),1)
from
ads_gx_project_attendance_detail_transition
where length(trim(real_name))>8;
- 结果
mysql数据库字段中存在隐藏字符CHAR(0)--解决小记