원본 출처: Wen Guobing 원본을 Bole Toutiao에 공유하신 것을 환영합니다
1 소개
제작 환경에서는 중국 데이터를 얻는 것과 같은 시나리오가 종종 있습니다. 그러면 질문이 생깁니다. 한자를 어떻게 일치시킬 수 있습니까?
이 글에서는 두 가지 방법을 제공합니다.
두 번째 데모
2.1 환경
mysql> "%version%"과 같은 변수 표시;
+- -----------+------------ -----+
| 변수_이름 | 값 |
+------------+ -----------------------------------+
| 프로토콜_버전 10 |
| 버전 |
| version_comment | MySQL 커뮤니티 서버(GPL) |
| version_compile_os |
+------------+---- ------- ----------+
세트당 5행(0.00초)
2.2 테스트 테이블 생성 및 테스트 데이터 삽입
mysql -S /tmp /mysql_5173.sock -uroot -proot
테스트 테이블을 생성하고 테스트 데이터를 삽입합니다.
mysql> USE 테스트;
데이터베이스 변경
mysql> CREATE TABLE 사용자
-> >-> ) DEFAULT CHARSET = utf8 ENGINE = INNODB;
쿼리 확인, 0개 행이 영향을 받음(0.10초)
mysql> 'user' G;
******************************** 1. 행 *************** *** *********
이름: user
엔진: InnoDB
버전: 10
Row_format: Compact
행: 2
Avg_row_length: 8192
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free : 0
자동_증분: NULL
Create_time: 2015-01-16 18:01:36
Update_time: NULL
Check_time: NULL
데이터 정렬: utf8_general_ci
체크섬: NULL
Create_options:
댓글:
1행 세트(0.00초)
오류:
지정된 쿼리 없음
mysql> INSERT INTO user VALUES('robin');
쿼리 확인, 1행이 영향을 받음(0.01초)
mysql> ; INSERT INTO user VALUES('Wen Guobing');
쿼리 확인, 1개 행이 영향을 받음(0.00초)
세 가지 구현
3.1 방법 1 정규 표현식
mysql> SELECT * FROM 사용자 G;
****************************** 1. 행 *** ************************
이름: 로빈
***** *********** **************** 2. 행 ******************** *******
이름: Wen Guobing
2행 세트(0.00초)
mysql> SELECT 이름,
-> ; CASE 이름 REGEXP "[u0391-uFFE5]"
-> WHEN 1 "한자가 아님"
-> "한자입니다"
-> END AS "한자인지 확인"
-> FROM user;
+----------+---- --- ---------+
| 이름 | 한자인지 확인|
+ -----------+------ ----------+
| |는 한자가 아닙니다|
|원궈빙은 한자입니다|
+---------+---------- ---+
세트의 2개 행(0.00초)
mysql> SELECT name FROM user WHERE NOT (name REGEXP "[ u0391-uFFE5]");
+---- -------+
| 이름 |
+--------- ---+
| 원궈빙|
+------------+
1 rowinset(0.00초)
3.2 방법 2 length() 및 char_length( )
mysql> SELECT name, length(name), char_length(name) FROM user;
+ --------+------------ -----+------+
| 이름 | 길이(이름) | char_length(이름) |
+------------+---------- ---+---- +
| 로빈 | 5 |
| 🎜>
+---------+---- --------+---- -+세트의 2개 행(0.00초)mysql> SELECT name FROM user WHERE length(name) char_length(name);+---- -----+| 이름 |+------------+| 원궈빙| +------------+1행 집합(0.00초)위 내용은 MySQL에서 한자를 판별하는 방법입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 주목해주세요!