准备:

2.1、环境

MySQL
mysql> SHOW VARIABLES LIKE "%version%";
+-------------------------+------------------------------+
| Variable_name           | Value                        |
+-------------------------+------------------------------+
| protocol_version        | 10                           |
| version                 | 5.1.73                       |
| version_comment         | MySQL Community Server (GPL) |
| version_compile_machine | i386                         |
| version_compile_os      | apple-darwin10.3.0           |
+-------------------------+------------------------------+
5 rows in set (0.00 sec)

2.2、创建测试表和插入测试数据

MySQL
mysql -S /tmp/mysql_5173.sock -uroot -proot

创建测试表和插入测试数据。

MySQL
mysql> USE test;
Database changedmysql> CREATE TABLE user-> (name VARCHAR(20)->  ) DEFAULT CHARSET = utf8 ENGINE = INNODB;
Query OK, 0 rows affected (0.10 sec)mysql> SHOW TABLE STATUS LIKE 'user' G;
*************************** 1. row ***************************Name: userEngine: InnoDBVersion: 10Row_format: CompactRows: 2
Avg_row_length: 8192Data_length: 16384
Max_data_length: 0Index_length: 0Data_free: 0
Auto_increment: NULLCreate_time: 2015-01-16 18:01:36Update_time: NULLCheck_time: NULLCollation: utf8_general_ciChecksum: NULL
Create_options:Comment:
1 row in set (0.00 sec)ERROR:
No query specifiedmysql> INSERT INTO user VALUES('robin');
Query OK, 1 row affected (0.01 sec)mysql> INSERT INTO user VALUES('温国兵');
Query OK, 1 row affected (0.00 sec)

方法:

3.1、方法一:正则表达式

MySQL
mysql> SELECT * FROM user G;
*************************** 1. row ***************************
name: robin
*************************** 2. row ***************************
name: 温国兵
2 rows in set (0.00 sec)mysql> SELECT name,->     CASE name REGEXP "[u0391-uFFE5]"->         WHEN 1 THEN "不是中文字符"->         ELSE "是中文字符"->     END AS "判断是否是中文字符"-> FROM user;
+-----------+-----------------------------+
| name      | 判断是否是中文字符 |
+-----------+-----------------------------+
| robin     | 不是中文字符          |
| 温国兵 | 是中文字符             |
+-----------+-----------------------------+
2 rows in set (0.00 sec)mysql> SELECT name FROM user WHERE NOT (name REGEXP "[u0391-uFFE5]");
+-----------+
| name      |
+-----------+
| 温国兵 |
+-----------+
1 row in set (0.00 sec)

3.2、方法二:length()和char_length()

MySQL
mysql> SELECT name, length(name), char_length(name) FROM user;
+-----------+--------------+-------------------+
| name      | length(name) | char_length(name) |
+-----------+--------------+-------------------+
| robin     |            5 |                 5 |
| 温国兵 |           20 |                 9 |
+-----------+--------------+-------------------+
2 rows in set (0.00 sec)mysql> SELECT name FROM user WHERE length(name)  char_length(name);
+-----------+
| name      |
+-----------+
| 温国兵 |
+-----------+
1 row in set (0.00 sec)

总结

方法一中,[u0391-uFFE5]匹配中文以外的字符。

方法二中,当字符集为UTF-8,并且字符为中文时,length()char_length()两个方法返回的结果不相同。

参考官方文档:

LENGTH()
Return the length of a string in bytes
Returns the length of the string str, measured in bytes. A multibyte character counts as multiple bytes. This means that for a string containing five 2-byte characters, LENGTH() returns 10, whereas CHAR_LENGTH() returns 5.

CHAR_LENGTH()
Return number of characters in argument
Returns the length of the string str, measured in characters. A multibyte character counts as a single character. This means that for a string containing five 2-byte characters, LENGTH() returns 10, whereas CHAR_LENGTH() returns 5.

Ref

12.5 String Functions

参考:

http://blog.jobbole.com/94567/(以上内容转自此篇文章)

MySQL判断中文字符的方法(转)相关推荐

  1. Java 完美判断中文字符的方法

    Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比 ...

  2. java识别中文_Java 完美判断中文字符的方法

    Java判断一个字符串是否有中文一般情况是利用Unicode编码正则来做判断,但是其实这个区间来判断中文不是非常精确,以下是比较完善的判断方法 Java判断一个字符串是否有中文一般情况是利用Unico ...

  3. centos 7 mysql 中文,解决centOS7 下mysql插入中文字符报错相关问题

    解决centOS7 下mysql插入中文字符报错相关问题 在刚装完mysql,就建立了数据库abc,然后新建一个abc表,插入英文没有问题,但是插入中文就有问题,会报错: ERROR 1366 (HY ...

  4. springMVC保存数据到mysql数据库中文乱码问题解决方法

    springMVC保存数据到mysql数据库中文乱码问题解决方法 参考文章: (1)springMVC保存数据到mysql数据库中文乱码问题解决方法 (2)https://www.cnblogs.co ...

  5. 如何在 MySQL 中判断中文字符?

    本文地址:http://blog.csdn.net/shanglianlm/article/details/49835487 一 引子 在生产环境中,经常会有这样的场景:获得中文数据.那问题就来了,怎 ...

  6. java 判断 中文字符_java中判断字符串中是否有中文字符

    package com.meritit.test; public class TestChart { public static void main(String[] args) throws Exc ...

  7. java中文字符_Java 完美判断中文字符

    Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比 ...

  8. Java 完美判断中文字符

    原创文章,转载请注明: 转载自micmiu – 大大的技术 | 小小的生活[ http://www.micmiu.com/ ] 本文链接地址: http://www.micmiu.com/lang/j ...

  9. mysql rpc_使用XML-RPC和MySQL处理中文字符

    我有一个异步Web服务,移动应用的用户可以在他们的手机上发表评论,它使用JSON将帖子上传到API,服务器将帖子输入到数据库中,并将确认发送回设备.服务器使用XML-RPC传递消息,但与设备的所有通信 ...

最新文章

  1. 下载最新版本Maven 3.3.9 ,检测安装是否成功时发现Java版本JDK却低于1.7时报错
  2. ubuntu 12 JDK 编译
  3. Linux系统的目录绑定配置
  4. 辽宁省风力发电行业“十四五”前景规划及竞争策略分析报告2022-2028年版
  5. MariaDB Window Functions窗口函数分组取TOP N记录
  6. Python: tkinter实例改名小工具
  7. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 规范与部署
  8. React 入门手册
  9. OSPF 提升四 Network Types FRAM-RELAY
  10. fscanf返回值被忽略怎么解决_pytest的fixture怎么用?
  11. java 自定义异常实例分析_Java自定义异常类的实例详解
  12. .Net Core之初识及WebApi的简单使用和发布
  13. LabView实验——温度检测系统(实验学习版)
  14. Kafka 与 RabbitMQ 如何选择使用哪个?
  15. 2.5 zio入门——ZIO类型别名
  16. 201771010137赵栋《第九周学习总结》
  17. 什么是Promise?Promise的优点
  18. Java语言程序设计与数据结构(基础篇)梁勇第九章 *9.3
  19. OLED12864裸屏驱动电路
  20. iGrimace iOS7-Ios8-ios一键新机 系统 NZT NEO 非V8锤子IG基本操作全教程:v3 v8

热门文章

  1. [问题2014S07] 复旦高等代数II(13级)每周一题(第七教学周)
  2. Service获取客户端IP地址(java)
  3. [转]SQL2000修改表创建日期
  4. nginx 优化,突破十万并发
  5. 大数据是国家目前急需的技术领域
  6. IAR常用快捷键及技巧
  7. mongodb创建集合命令db.createCollection详解
  8. x为正变数,求y=x^3/(x^4+4)的最大值
  9. 【系统自启动】使用windows自带工具管理开机启动项
  10. 双十一虽过,李宁老师视频课程优惠仍将继续