谈关于mysql中文模糊查找问题
许多朋友在使用mysql进行中文模糊查找时(如select * from mytable where mysqlname like "%中文%"),就象我现在一样,找到不应找到的行!
有一些朋友提出了解决办法,大致有两种:
其一,加字段属性binary(),
其二,改my.cfg启动参数为default-character-set =gbk(或gb2312).
我从问题的根本原因分析,
其一,字母大小不区分问题(通过方法一可以解决)
其二,这是大多数人没有想到的,我以前也没有想到,
例:
汉字“不”的第1、2字节ascii值分别为:178与187
汉字“安”的第1、2字节ascii值分别为:176与178
汉字“花”的第1、2字节ascii值分别为:187与168
聪明的人已经看出来了:在字符串“安花”中模糊查找字符“不”字时,mysql系统也会认为两者区配!
我的mysql-4.0.12没有解决上述问题。不过我采用一个较笨的办法解决了!
针对以上问题,各位高手有何解决办法!!!一起来说一说!
(提出办法者可得100分)
---------------------------------------------------------------
1: my.ini 文件中加入 default-character-set =gb2312
2: 字段不要加 Binary 属性
3: 执行 select * from mytable where mysqlname like "%不%"
---------------------------------------------------------------
需要说明的是
1:
2:
是最重要的,
如果是查询汉字,
select * from mytable where mysqlname like "%不%"
如果是大小字区分查询英文字符,
select * from mytable where mysqlname like Binary("%A%")
如果上述条件均要
select * from mytable where mysqlname like "%不%" AND mysqlname like Binary("%A%")
不过像这类情况,
已不再建议使用 LIKE '%a%' 形式了
建议使用 全文索引 与 正则表达式 来匹配字串
相关文档:
MYSQL中常用的命令大全
一、 数据库操作的命令
1. 创建数据库
Ø create database Name;
2. 选择数据库
Ø use DatabaseName;
3. 直接删除数据库,不提醒
Ø drop database Name;
4. 删除数据库前,有提示。
Ø drop ......
首先,打开cmd—–net start 查看mysql是否启动。启动的话就停止net stop mysql.
1、在dos下运行C:\Program Files\MySQL\MySQL Server 5.0\bin
2、mysqld-nt --init-file=c:\mysql\pwdhf.txt 其中在c:\mysql建一个pwdhf.txt文件,并写下你的新密码。
3、运行些命令后,再用新密码登录,即可成功修改密码。 ......
字段pageNum
1,6,9,11
希望排序顺序为1,6,9,11
但是实际排序为1,11,6,9
后来发现是因为pageNum这个字段是varchar类型的不是int型,所以排序会出问题。
网上的解决方法为
order by pageNum+0
order by pageNum×1
不知道为什么order by pageNum×1 数据库通不过
但是pageNum+0是好用的 ......
几个平常用的mysql函数
/*****************************************************
1.判断字符串是否为汉字 返回值:1-汉字 0-非汉字
*****************************************************/
DROP FUNCTION IF EXISTS fc_is_hanzi;
CREATE FUNCTION fc_is_hanzi(
p_str VARCHAR(1024)
)
......
MySQL备份还原数据库批处理
在日常工作中,我们往往需要对MySQL数据库进行备份,有时可以通过拷贝整个文件,有时通过备份整个库还有的时候我们就只需要备份某个表。
1、备份数据库(单个表备份) bk_table.bat
mysqldump -h127.0.0.1 -P3306 -uroot -proot --default-character-set=gbk -t database1 table1>tabl ......