相关内容:
Mysql utf8 和utf8mb4 的区别
Mysql 批量更改数据表和字段的字符集(Mysql UTF-8字符集更改为utf8mb4字符集)

问题

在mysql中查询一条记录,然后使用equals判断如下:

// tableField 为mysql 表中的一个字段,tableField 的字段值为""  , 在使用equals的时候,发现为false
if ("".equals(tableField)) //false

问题原因

原因是因为java环境中的字符编码为UTF-8,mysql 中的字符编码也为UTF-8,但是mysql中的UTF-8却不是真正意义上的UTF-8。
utf8”只支持每个字符最多三个字节,而真正的 UTF-8 是每个字符最多四个字节。MySQL 一直没有修复这个 bug,他们在 2010 年发布了一个叫作“utf8mb4”的字符集,绕过了这个问题。

问题解决

把mysql中的表字符编码改为utf8mb4,问题解决。

怎么改

单个表改

ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;// 把对应的TABLE_NAME改为你需要改的表就可以了。

批量改
第一步:执行以下sql

SELECTCONCAT('ALTER TABLE ',TABLE_NAME,' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;')
FROMinformation_schema.`TABLES`
WHERETABLE_SCHEMA = 'DATABASE_NAME';


第二步把结果拷出来再执行

结尾

建议所有在使用“utf8”的 MySQL 和 MariaDB 用户都应该改用“utf8mb4”,永远都不要再使用“utf8”。不然很有可能出现编码的问题,而且这种问题定位比较困难。

记一次Mysql查询字段为空串在java中使用equals不相等的问题相关推荐

  1. MySQL查询字段区不区分大小写? innodb的事务与日志的实现方式?binlog的几种日志录入格式以及区别?

    MySQL查询字段区不区分大小写? MySQL innodb的事务与日志的实现方式 MySQL binlog的几种日志录入格式以及区别 MySQL查询字段区不区分大小写? 答案是不区分 如何解决需要区 ...

  2. mysql查询字段大小写结果相同,mysql大小写查询不敏感,mysql5.7查询不区分大小写解决方案。

    下面有两条sql,主键查询,在mysql中查询到的结果相同. SELECT* FROM USER WHEREid = 'EM58hdK4nXC';SELECT* FROM USER WHEREid = ...

  3. mysql查询唯一单词_MySql从表中获取唯一单词列表,其中字段中的值用逗号分隔

    我不确定这是否可以用纯SQL(MySQL),但无论如何我会问.我有这样一张桌子: ID TAGS ----------------------------- 1 word1,word2,word3 2 ...

  4. mysql 查询字段中是否存在空格的_mysql查询字段中带空格的值的sql语句

    (1)mysql replace 函数 语法:replace(object,search,replace) 意思:把object中出现search的全部替换为replace 代码如下 update ` ...

  5. mysql查询字段不为数字_MySQL查询指定字段不是数字与逗号的sql

    核心sql语句 MySQL查询不包含数字的语句: SELECT * FROM test WHERE `name` regexp '[^0-9]'; MySQL查询纯数字的语句: SELECT * FR ...

  6. mysql查询字段变慢,MySQL Query IN()子句在索引列上变慢

    我有一个由PHP脚本生成的MySQL查询,该查询将如下所示: SELECT * FROM Recipe_Data WHERE 404_Without_200 = 0 AND Failures_With ...

  7. mysql查询字段是否递增连续_自增长字段值的连续递增实现

    一.背景 在上一篇<数据库操作类SqlHelper>博文的最后,提到了一个实践运用中遇到的问题,就是数据库表中的自增长字段的赋值不受人为控制.比如数据库有一个tb_Department表, ...

  8. mysql 添加字段 描述_mysql新建表 中是否自带描述字段?

    展开全部 可以直接自己添加描述字段. DROP TABLE IF EXISTS `user`; CREATE TABLE user ( idBIGINT(20) UNSIGNED NOT NULL A ...

  9. Mysql某个字段内容替换(字符串中的一部分内容替换) sql

    Mysql 某个字段内容替换 问题描述: 将某一个字段的数据内容中的一部分替换:如图 数据量大情况下可以进行批量替换会很方便快捷 问题解决 sql函数: INSERT(s1,x,len,s2) 字符串 ...

最新文章

  1. roadflow2.1版oracle,RoadFlowVue3.0.2更新日志
  2. linux登oracle登陆不了,oracle: linux服务器本机不能登陆的解决
  3. Java的挥发性修饰符
  4. lettuce 配置域名 dns 切换
  5. 课题开题报告范文样本_成都汽车职业技术学校举行 2020年省、市、区课题开题报告会...
  6. STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.
  7. 软件工程—需求分析阶段
  8. 第二工业大学计算机应用大专录取分,上海第二工业大学2017年分省分专业录取分数线...
  9. Camera图像处理中的gain和offset
  10. RobotStudio 创建第一个工作站
  11. Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization
  12. 计算机内部的单位换算(内存)byte B KB MB GB TB
  13. 信捷plc modbus通信
  14. 纪中9日游(2019.7.5~7.13)
  15. 【自然语言处理】ELMo 讲解
  16. mysql插入时间少八个小时
  17. 20多家银行加入“新加坡-香港”区块链贸易网络项目
  18. Mac OS和Office版本问题
  19. 第7批候选!高工智能汽车金球奖入围年度产品/方案公示
  20. 12种食品狂吸走你的多余脂肪

热门文章

  1. oracle sha2,Oracle11.2.0.1在AMD CPU 64位硬件,32位操作系统下的BUG 8670579
  2. java http get_「面小易-面经12」阿里巴巴Java方向面试题汇总(含答案)
  3. 更新了android sdk出现aapt问题以及模拟器启动错误
  4. 菜鸟的学习之路(8) — 数组(Array)
  5. google 地图 V3 运动轨迹
  6. tomcat 报错:Error occurred during initialization of VM
  7. How to read MANIFEST.MF file from JAR using Bash
  8. CentOS 利用Yum安装mysql后无法启动(MySQL Daemon failed to start.)
  9. c3p0三种配置方式(automaticTestTable)
  10. poj - 2503 Babelfish