MySQL判断中文字符的方法(转)
准备:
2.1、环境
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 -S /tmp/mysql_5173.sock -uroot -proot
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> 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> 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判断中文字符的方法(转)相关推荐
- Java 完美判断中文字符的方法
Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比 ...
- java识别中文_Java 完美判断中文字符的方法
Java判断一个字符串是否有中文一般情况是利用Unicode编码正则来做判断,但是其实这个区间来判断中文不是非常精确,以下是比较完善的判断方法 Java判断一个字符串是否有中文一般情况是利用Unico ...
- centos 7 mysql 中文,解决centOS7 下mysql插入中文字符报错相关问题
解决centOS7 下mysql插入中文字符报错相关问题 在刚装完mysql,就建立了数据库abc,然后新建一个abc表,插入英文没有问题,但是插入中文就有问题,会报错: ERROR 1366 (HY ...
- springMVC保存数据到mysql数据库中文乱码问题解决方法
springMVC保存数据到mysql数据库中文乱码问题解决方法 参考文章: (1)springMVC保存数据到mysql数据库中文乱码问题解决方法 (2)https://www.cnblogs.co ...
- 如何在 MySQL 中判断中文字符?
本文地址:http://blog.csdn.net/shanglianlm/article/details/49835487 一 引子 在生产环境中,经常会有这样的场景:获得中文数据.那问题就来了,怎 ...
- java 判断 中文字符_java中判断字符串中是否有中文字符
package com.meritit.test; public class TestChart { public static void main(String[] args) throws Exc ...
- java中文字符_Java 完美判断中文字符
Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比 ...
- Java 完美判断中文字符
原创文章,转载请注明: 转载自micmiu – 大大的技术 | 小小的生活[ http://www.micmiu.com/ ] 本文链接地址: http://www.micmiu.com/lang/j ...
- mysql rpc_使用XML-RPC和MySQL处理中文字符
我有一个异步Web服务,移动应用的用户可以在他们的手机上发表评论,它使用JSON将帖子上传到API,服务器将帖子输入到数据库中,并将确认发送回设备.服务器使用XML-RPC传递消息,但与设备的所有通信 ...
最新文章
- 下载最新版本Maven 3.3.9 ,检测安装是否成功时发现Java版本JDK却低于1.7时报错
- ubuntu 12 JDK 编译
- Linux系统的目录绑定配置
- 辽宁省风力发电行业“十四五”前景规划及竞争策略分析报告2022-2028年版
- MariaDB Window Functions窗口函数分组取TOP N记录
- Python: tkinter实例改名小工具
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 规范与部署
- React 入门手册
- OSPF 提升四 Network Types FRAM-RELAY
- fscanf返回值被忽略怎么解决_pytest的fixture怎么用?
- java 自定义异常实例分析_Java自定义异常类的实例详解
- .Net Core之初识及WebApi的简单使用和发布
- LabView实验——温度检测系统(实验学习版)
- Kafka 与 RabbitMQ 如何选择使用哪个?
- 2.5 zio入门——ZIO类型别名
- 201771010137赵栋《第九周学习总结》
- 什么是Promise?Promise的优点
- Java语言程序设计与数据结构(基础篇)梁勇第九章 *9.3
- OLED12864裸屏驱动电路
- iGrimace iOS7-Ios8-ios一键新机 系统 NZT NEO 非V8锤子IG基本操作全教程:v3 v8
热门文章
- [问题2014S07] 复旦高等代数II(13级)每周一题(第七教学周)
- Service获取客户端IP地址(java)
- [转]SQL2000修改表创建日期
- nginx 优化,突破十万并发
- 大数据是国家目前急需的技术领域
- IAR常用快捷键及技巧
- mongodb创建集合命令db.createCollection详解
- x为正变数,求y=x^3/(x^4+4)的最大值
- 【系统自启动】使用windows自带工具管理开机启动项
- 双十一虽过,李宁老师视频课程优惠仍将继续