出典: Wen Guobing 原文を Bole Toutiao に共有することを歓迎します
1 はじめに
実稼働環境では、中国語のデータを取得するというシナリオがよくあります。そこで疑問が生じます。どうすれば漢字を一致させることができるのでしょうか?
この記事では 2 つの方法を紹介します。
2 番目のデモ
2.1 環境
mysql> SHOW VARIABLES LIKE "%version%";
+---------------------- --- --+--------------------------------+
| 変数名 |
+- ----- -------+-------------------------- ------- +
| バージョン |
| バージョン_コンパイル_os | darwin10.3.0 |
+ ------------------------+-------------- -------- ------+
5行セット(0.00秒)
2.2 テストテーブルの作成とテストデータの挿入
mysql -S /tmp/mysql_5173.sock -uroot -proot
テストテーブルを作成し、テストデータを挿入します。
mysql> テストを使用します;
データベースが変更されました
-> (name VARCHAR(20)
->) DEFAULT CHARSET = utf8 ENGINE = INNODB;
Query OK、0行です影響を受けました (0.10 秒)
mysql> SHOW TABLE STATUS LIKE 'user' G;
**************************** 1.行 ****************************
名前: ユーザー
エンジン: InnoDB
バージョン: 10
Row_format: Compact
行数: 2
Avg_row_length: 8192
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: NULL
Create_time: 2 015 -01-16 18:01:36
Update_time : NULL
Check_time: NULL
照合順序: utf8_general_ci
チェックサム: NULL
Create_options:
コメント:
セット内の 1 行 (0.00 秒)
エラー:
クエリが指定されていません
mysql>に挿入user VALUES('robin');
クエリ OK、1 行が影響 (0.01 秒)
mysql> INSERT INTO user VALUES('Wen Guobing');
クエリ OK、1 行が影響 (0.00 秒)
3実装
3.1 メソッド 1 正規表現
mysql> SELECT * FROM user G;
*************************** 1.行 * ****************************
名前: robin
************ ************ ********** 2. 行 ************************* **
名前: Wen Guobing
セット内の 2 行 (0.00 秒)
mysql> SELECT name,
-> CASE name REGEXP "[u0391-uFFE5]"
-> WHEN 1 THEN漢字ではありません"
-> ELSE "は漢字です"
->END AS "漢字かどうかを判断します"
-> FROM user;
+------ --+----------- -------+
| 名前が漢字かどうかを判断する |
+----------+------ -----------------------+
| |
| ウェン・グオビン| は漢字です|
+----- ------+------ --------------+
セット内の 2 行 (0.00 秒)
mysql> ; ユーザー WHERE NOT から名前を選択 (name REGEXP "[u0391-uFFE5]");
+ ----------+
| 名前 |
+---------- ---+
|
+---------- -+
1 rowinset(0.00 sec)
3.2 メソッド 2 length() と char_length()mysql> ; SELECT name, length(name), char_length(name) FROM user;+--- --------+--------------+---- ---------------+
| (名前) | char_length(名前) |
+----------+---- ----------+------------ -------+
| 5 || 9 |+----------+------ -------+-------------------+
セット内の 2 行 (0.00 秒)
mysql> SELECT name FROM user WHERE length(name ) char_length(名前);
+----------+
| 名前 |
+ -----------+
| ----------+
1行インセット(0.00秒)
上記は、MySQL で漢字を判別する方法です。関連コンテンツの詳細については、PHP 中国語 Web サイト (www.php.cn) に注目してください。