前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在 MySQL 中判断中文字符?

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

作者头像
wangxl
发布2018-03-08 11:29:00
2.1K0
发布2018-03-08 11:29:00
举报
文章被收录于专栏:PHP在线PHP在线

原文出处: 温国兵

一 引子

在生产环境中,经常会有这样的场景:获得中文数据。那问题就来了,怎么才能匹配出中文字符呢?

本文提供两种方法。

二 演示

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 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> 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)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-11-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 php 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二 演示
    • 2.1 环境
      • 2.2 创建测试表和插入测试数据
      • 三 实现
        • 3.1 方法一 正则表达式
          • 3.2 方法二 length() 和 char_length()
          相关产品与服务
          云数据库 SQL Server
          腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档