MYSQL判断中文、英文、日文常用语句

MYSQL判断中文、英文、日文常用语句

mysql提供了REGEXP关键字来判断一个字符串和一个正则表达式是否匹配,可以作为判断字符串是否是纯中文或纯英文等的依据。

正则表达式匹配
[一-龥]中文字符
[ a-zA-Z]英文字母
[ 0-9]数字
[ぁ-ゞァ-ヾ]日文字符

正则表达式[?-?]表示匹配某一范围的字符,可以有多个不连续范围;[^?-?](范围前加否定^)表示匹配不在该范围内的字符

1.含中文字符的字符串

判断字符串含有中文字符直接匹配即可

//选取含有中文字符的title
SELECT title
    FROM magnetlib.magnets
    WHERE (magnets.title REGEXP '[一-龥]');
2.仅含中文字符的字符串

判断字符串仅含有中文字符(纯中文字符串),可以将字符串与非中文字符的正则表达式匹配,选取匹配失败的(不含非中文字符)

#纯中文字符串
SELECT title
    FROM magnetlib.magnets
    WHERE (magnets.title not REGEXP '[^一-龥]');

同理,

3.仅含中文字符和数字的字符串
#仅含数字中文字符串
SELECT title
FROM magnetlib.magnets
WHERE (magnets.title not REGEXP '[^一-龥^0-9]');
4.仅含英文字母和数字的字符串
#纯英文字母和数字字符
SELECT title
FROM magnetlib.magnets
WHERE
    magnets.title not REGEXP '[^a-z^A-Z^0-9]';
5.含日文字符的字符串
#含日文字符串
SELECT title
FROM magnetlib.magnets
WHERE
    magnets.title  REGEXP '[ぁ-ゞァ-ヾ]'
    
6.不含中文或日文的字符串
#非中文或日文字符串
SELECT title
FROM magnetlib.magnets
WHERE
    magnets.title not REGEXP '[一-龥ぁ-ゞァ-ヾ]';

补充

用另一种方法也能判断字符串是否只含英文和数字,这种方法是基于LENGTH函数和CHAR_LENGTH函数的
Length()为存储长度,一个英文字符(ASCII码小于128的)为1,其它的存储长度为3
Char_Length()为字符串长度,是字符的个数

//选取仅含英文字符的
SELECT
    title
FROM
    magnetlib.magnets t
WHERE  LENGTH(title) =  CHAR_LENGTH(title);
//选取不含英文字符的
SELECT
    title
FROM
    magnetlib.magnets t
WHERE  LENGTH(title) =  3*CHAR_LENGTH(title);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值