准备:

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 changed mysql> 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: user
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 2
Avg_row_length: 8192
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: NULL
Create_time: 2015-01-16 18:01:36
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec) ERROR:
No query specified mysql> 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/(以上内容转自此篇文章)

最新文章

  1. PAP认证方式原理和实现
  2. 项目部署到tomcat Root中后导致 WebApplicationContext 初始化两次的解决方法
  3. autoLayout约束图解
  4. 30分钟LINQ教程
  5. html5+ 获取当前设备的加速度信息
  6. HTML--表单,图片热点,网页划区和拼接
  7. C语言中%*s,%*c 是什么意思(还有%*.*s)
  8. 如何自定义一个优雅的ContentProvider
  9. lua curl动态链接库编译安装
  10. jQuery checkbox 全选
  11. 怎么写jquery插件
  12. C. Vasya and String
  13. 修改was数据源
  14. mac 下 clang++ 找不到头文件 stdlib.h
  15. 用Count() > 0 来判断集合非空的问题
  16. java中annotation
  17. 【BZOJ4310】跳蚤
  18. QT 读取txt文件的几种方法
  19. Swift5 语言参考(七) 属性
  20. 如何在CentOS 7中禁用IPv6

热门文章

  1. pycharm安装scipy,安装失败
  2. java细节篇(==和equals的区别)
  3. 云效(阿里云)流水线 + nginx + uWsgi + flask + python3 基础环境搭建 --备忘
  4. HDU 3336 Count the string ( KMP next函数的应用 + DP )
  5. ALPHA(10)
  6. hdu 1211 RSA (逆元)
  7. log4j的各种类的配置
  8. Bsd内核选项总结
  9. [bzoj] 3343 教主的魔法 || 带修改分块
  10. linux精彩收集