高分求一个mysql正则表达式 网上查到\u4e00-\u9fa5表示unicode的中文范围,可数据库中测试的时候发现结果相反。(数据库为utf8)。现在求助大家一个mysql中的正则。要求如下:如果一个字符串中包含有中文(当然也可以包含数字,括号,下划线,空格,标点符号等等),包含中文是必须的条件,那么就返回true,否则返回false。请大家看仔细,一定要包含中文,其他字符不限制。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 筛选有汉字的记录:SELECT *FROM `snuo_news_text`WHERE textname REGEXP '[^ -~]' =1 英文字母的范围是从 空格 到 ~ [^ -~] 代码不属于空格到~的任何字符。 当有中文的时候会结果为 true, 但并不正确,比如当你的字符串中包括 \n , \t 等时也会为 true. 下例可以看出,在'ab12A\t=' 时结果并不正确。mysql> select 'ab12A=' regexp '[^ -~]';+--------------------------+| 'ab12A=' regexp '[^ -~]' |+--------------------------+| 0 |+--------------------------+1 row in set (0.00 sec)mysql> select 'ab1字2A=' regexp '[^ -~]';+----------------------------+| 'ab1字2A=' regexp '[^ -~]' |+----------------------------+| 1 |+----------------------------+1 row in set (0.00 sec)mysql> select 'ab12A\t=' regexp '[^ -~]';+----------------------------+| 'ab12A\t=' regexp '[^ -~]' |+----------------------------+| 1 |+----------------------------+1 row in set (0.00 sec)正确的应该如下。mysql> select 'ab12A=' regexp '[^[.NUL.]-~]';+--------------------------------+| 'ab12A=' regexp '[^[.NUL.]-~]' |+--------------------------------+| 0 |+--------------------------------+1 row in set (0.00 sec)mysql> select 'ab12A\t=' regexp '[^[.NUL.]-~]';+----------------------------------+| 'ab12A\t=' regexp '[^[.NUL.]-~]' |+----------------------------------+| 0 |+----------------------------------+1 row in set (0.00 sec)mysql> select 'adf字123符串rg' regexp '[^[.NUL.]-~]';+----------------------------------------+| 'adf字123符串rg' regexp '[^[.NUL.]-~]' |+----------------------------------------+| 1 |+----------------------------------------+1 row in set (0.02 sec)mysql> 做MYSQL同步时,从服务器无法连接主服务器,错误代码:2003 不会吧,我发个我的博客都被删了?而且不给个通知…… mysql 如何存储过程返回记录的更新条数 update语句有时很慢 如何在Mysql实现TOP功能,注Limit实现不出来..请进来看看 怎样提高mysql的效率? 更改用户 什么情况下VARCHAR比CHAR效率高? mysql如何调用外部程序 通信行为分析 libpqC库中是否提供数据库备份的函数? 交学费,问个关于用psql语句导出数据的问题
SELECT *
FROM `snuo_news_text`
WHERE textname REGEXP '[^ -~]' =1
mysql> select 'ab12A=' regexp '[^ -~]';
+--------------------------+
| 'ab12A=' regexp '[^ -~]' |
+--------------------------+
| 0 |
+--------------------------+
1 row in set (0.00 sec)mysql> select 'ab1字2A=' regexp '[^ -~]';
+----------------------------+
| 'ab1字2A=' regexp '[^ -~]' |
+----------------------------+
| 1 |
+----------------------------+
1 row in set (0.00 sec)mysql> select 'ab12A\t=' regexp '[^ -~]';
+----------------------------+
| 'ab12A\t=' regexp '[^ -~]' |
+----------------------------+
| 1 |
+----------------------------+
1 row in set (0.00 sec)
正确的应该如下。
mysql> select 'ab12A=' regexp '[^[.NUL.]-~]';
+--------------------------------+
| 'ab12A=' regexp '[^[.NUL.]-~]' |
+--------------------------------+
| 0 |
+--------------------------------+
1 row in set (0.00 sec)mysql> select 'ab12A\t=' regexp '[^[.NUL.]-~]';
+----------------------------------+
| 'ab12A\t=' regexp '[^[.NUL.]-~]' |
+----------------------------------+
| 0 |
+----------------------------------+
1 row in set (0.00 sec)mysql> select 'adf字123符串rg' regexp '[^[.NUL.]-~]';
+----------------------------------------+
| 'adf字123符串rg' regexp '[^[.NUL.]-~]' |
+----------------------------------------+
| 1 |
+----------------------------------------+
1 row in set (0.02 sec)mysql>