mysql 查询中文数据

ruanshiji 2012-06-28 09:34:33
我有张表数据量很大,name字段数据有中文的也有英文的,现在我想查出为中文的那些数据?
...全文
615 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
helloyou0 2012-06-29
  • 打赏
  • 举报
回复
嗯,utf8的不能用上面那个,那是gbk的,
等我明天写个给你,也许待会楼下就有人给你了


[Quote=引用 18 楼 的回复:]

引用 17 楼 的回复:

该字段character set设的啥?

utf8_general_ci
[/Quote]
timgzhu 2012-06-29
  • 打赏
  • 举报
回复
char_length(name)!=length(name) 楼上这个很赞
timgzhu 2012-06-29
  • 打赏
  • 举报
回复
mysql 的 REGEXP不是很强大, 试试 [^[:alnum:][:cntrl:][:space:]]
helloyou0 2012-06-29
  • 打赏
  • 举报
回复
先规范一下说法:
这个"中文"虽然我们平时说意义很明确,不过到了电脑里就不那么清楚了....
utf8里中文汉字是和韩文日文汉字放一起的,统称cjk...其实还包括一些全角的符号...

utf8里汉字基本都在3字节区,有个别4字节的不过都是冷僻字,
同时,3字节区里还有印度字啊什么的...因为你不会用到,也就都不管它们...

所以我们简单化一点, 假设你是要找出所有带"3字节utf8字符"的记录

那么可以用这个
name regexp concat('[',char(0xE0),'-',char(0xEF),'][',char(0x80),'-',char(0xBF),'][',char(0x80),'-',char(0xBF),']')

注意\xXX这样的写法没法在mysql里的正则里直接用,所以要用char和concat....google一下没找到更方便的方法...


另外,不知道你数据里是否有2字节区的字符,(欧洲字符希腊字符拉丁字符等),
如果确定没有....确定!!!
就是说你数据里除了单字节的ascii字符,就是3字节的汉字....

那么可以用一个简单的方法:
char_length(name)!=length(name)


ruanshiji 2012-06-29
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]

该字段character set设的啥?
[/Quote]
utf8_general_ci
ruanshiji 2012-06-29
  • 打赏
  • 举报
回复
噢,好啊,赶紧啊,高手上啊!
helloyou0 2012-06-29
  • 打赏
  • 举报
回复
该字段character set设的啥?
xuzuning 2012-06-28
  • 打赏
  • 举报
回复
你的 name 中是否存在中文和英文混合的情况?
ruanshiji 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

如果要查找带中文的 可以用这个正则 [\x7f-\xff]
[/Quote]
SELECT name FROM table_name WHERE name regexp '[\x7f-\xff]' 你说这种,没用啊
katelyn 2012-06-28
  • 打赏
  • 举报
回复
如果是想识别中文和英文,比较笨的方法是在表中加个字段记录当前记录name字段的编码格式,然后查找为gbk或是gb2312的。
蹲坑看月亮 2012-06-28
  • 打赏
  • 举报
回复
SELECT NAME FROM BIAMING WHERE LIKE NAMe="";
你那些中文有什么特点没,?
戳,怎么识别中文和英文,求解??
wtsyr 2012-06-28
  • 打赏
  • 举报
回复
如果要查找带中文的 可以用这个正则 [\x7f-\xff]
xiachao2008 2012-06-28
  • 打赏
  • 举报
回复
like "中文%"
10975037 2012-06-28
  • 打赏
  • 举报
回复
用ASCII码值行不?
10975037 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

引用 11 楼 的回复:

嗯,把所有的名字从数据库取出来组成数组,然后跟中文正则匹配。


这主意就不用说拉,我数据量达到100万啦。你查毛啊,你想卡死啊
[/Quote]唉,那你慢慢想办法吧。
ruanshiji 2012-06-28
  • 打赏
  • 举报
回复
有没有mysql速度快的,又方便的?
ruanshiji 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

嗯,把所有的名字从数据库取出来组成数组,然后跟中文正则匹配。
[/Quote]

这主意就不用说拉,我数据量达到100万啦。你查毛啊,你想卡死啊
ruanshiji 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

引用 9 楼 的回复:

这个理论上有混合,实际上应该没有吧,要不叫 "王ba"?? 有这样子的??
这个不能想当然,纯中文和中英混合算法是不同的,前者要简单的多
[/Quote]
有混合啊,有的单个是英文,有的是中文,有的是中英混合的,我就想要只要出现中文的数据我都要查出来,不管他是不是混合的
10975037 2012-06-28
  • 打赏
  • 举报
回复
嗯,把所有的名字从数据库取出来组成数组,然后跟中文正则匹配。
xuzuning 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

这个理论上有混合,实际上应该没有吧,要不叫 "王ba"?? 有这样子的??
[/Quote]这个不能想当然,纯中文和中英混合算法是不同的,前者要简单的多
加载更多回复(3)

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧