记一次Mysql查询字段为空串在java中使用equals不相等的问题
相关内容:
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不相等的问题相关推荐
- MySQL查询字段区不区分大小写? innodb的事务与日志的实现方式?binlog的几种日志录入格式以及区别?
MySQL查询字段区不区分大小写? MySQL innodb的事务与日志的实现方式 MySQL binlog的几种日志录入格式以及区别 MySQL查询字段区不区分大小写? 答案是不区分 如何解决需要区 ...
- mysql查询字段大小写结果相同,mysql大小写查询不敏感,mysql5.7查询不区分大小写解决方案。
下面有两条sql,主键查询,在mysql中查询到的结果相同. SELECT* FROM USER WHEREid = 'EM58hdK4nXC';SELECT* FROM USER WHEREid = ...
- mysql查询唯一单词_MySql从表中获取唯一单词列表,其中字段中的值用逗号分隔
我不确定这是否可以用纯SQL(MySQL),但无论如何我会问.我有这样一张桌子: ID TAGS ----------------------------- 1 word1,word2,word3 2 ...
- mysql 查询字段中是否存在空格的_mysql查询字段中带空格的值的sql语句
(1)mysql replace 函数 语法:replace(object,search,replace) 意思:把object中出现search的全部替换为replace 代码如下 update ` ...
- mysql查询字段不为数字_MySQL查询指定字段不是数字与逗号的sql
核心sql语句 MySQL查询不包含数字的语句: SELECT * FROM test WHERE `name` regexp '[^0-9]'; MySQL查询纯数字的语句: SELECT * FR ...
- mysql查询字段变慢,MySQL Query IN()子句在索引列上变慢
我有一个由PHP脚本生成的MySQL查询,该查询将如下所示: SELECT * FROM Recipe_Data WHERE 404_Without_200 = 0 AND Failures_With ...
- mysql查询字段是否递增连续_自增长字段值的连续递增实现
一.背景 在上一篇<数据库操作类SqlHelper>博文的最后,提到了一个实践运用中遇到的问题,就是数据库表中的自增长字段的赋值不受人为控制.比如数据库有一个tb_Department表, ...
- mysql 添加字段 描述_mysql新建表 中是否自带描述字段?
展开全部 可以直接自己添加描述字段. DROP TABLE IF EXISTS `user`; CREATE TABLE user ( idBIGINT(20) UNSIGNED NOT NULL A ...
- Mysql某个字段内容替换(字符串中的一部分内容替换) sql
Mysql 某个字段内容替换 问题描述: 将某一个字段的数据内容中的一部分替换:如图 数据量大情况下可以进行批量替换会很方便快捷 问题解决 sql函数: INSERT(s1,x,len,s2) 字符串 ...
最新文章
- roadflow2.1版oracle,RoadFlowVue3.0.2更新日志
- linux登oracle登陆不了,oracle: linux服务器本机不能登陆的解决
- Java的挥发性修饰符
- lettuce 配置域名 dns 切换
- 课题开题报告范文样本_成都汽车职业技术学校举行 2020年省、市、区课题开题报告会...
- STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.
- 软件工程—需求分析阶段
- 第二工业大学计算机应用大专录取分,上海第二工业大学2017年分省分专业录取分数线...
- Camera图像处理中的gain和offset
- RobotStudio 创建第一个工作站
- Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization
- 计算机内部的单位换算(内存)byte B KB MB GB TB
- 信捷plc modbus通信
- 纪中9日游(2019.7.5~7.13)
- 【自然语言处理】ELMo 讲解
- mysql插入时间少八个小时
- 20多家银行加入“新加坡-香港”区块链贸易网络项目
- Mac OS和Office版本问题
- 第7批候选!高工智能汽车金球奖入围年度产品/方案公示
- 12种食品狂吸走你的多余脂肪
热门文章
- oracle sha2,Oracle11.2.0.1在AMD CPU 64位硬件,32位操作系统下的BUG 8670579
- java http get_「面小易-面经12」阿里巴巴Java方向面试题汇总(含答案)
- 更新了android sdk出现aapt问题以及模拟器启动错误
- 菜鸟的学习之路(8) — 数组(Array)
- google 地图 V3 运动轨迹
- tomcat 报错:Error occurred during initialization of VM
- How to read MANIFEST.MF file from JAR using Bash
- CentOS 利用Yum安装mysql后无法启动(MySQL Daemon failed to start.)
- c3p0三种配置方式(automaticTestTable)
- poj - 2503 Babelfish