用PHp+mysql模糊查询时
select * from company where company_name like BINARY '%田%'
只能查出部分结果,比如能查出:“田园”“种田”“田田”
却查不出:“田里”“出田”等;
去掉或加上BINARY也是一样,网上mysql模糊查询大部分的问题是查出很多不相关的数据,而我碰到的情况是查出的都是相关的,但就是不全!
select * from company where company_name like BINARY '%田%'
只能查出部分结果,比如能查出:“田园”“种田”“田田”
却查不出:“田里”“出田”等;
去掉或加上BINARY也是一样,网上mysql模糊查询大部分的问题是查出很多不相关的数据,而我碰到的情况是查出的都是相关的,但就是不全!
解决方案 »
- mysql如何同步更新指定表数据
- 问一个正则的问题
- 帮忙看下sql语句,执行了15秒多
- ERROR 1146 (42S02): Table 'mysql.procs_priv' doesn't exist
- 我想指定mysql的列值默认为空字符串
- MYSQL数据文件太大,对性能有影响吗?
- 请问mysqldump能否只导出一个表中的某些列?
- MYSQL提示说:incorrect integer value,我大致查了一下,说是因为MYSQL5的BUG,高手能详细说下吗?谢谢~~
- 请教关于timestamp问题
- 请教 asp连接mysql该如何配置
- 帮我写个sql语句。
- mysql命令行下怎样实现数据的回滚操作?
这是我实验的结果。
mysql> select id from tt;
+------+
| id |
+------+
| 田园 |
| 种田 |
| 田田 |
| 田里 |
| 出田 |
| 种菜 |
+------+
mysql> select id from tt where id like '%田%';
+------+
| id |
+------+
| 田园 |
| 种田 |
| 田田 |
| 田里 |
| 出田 |
+------+
mysql> select id from tt where binary id like '%田%';
Empty setmysql> select id from tt where id like binary '%田%';
Empty set
最后两行是没有结果的,我也菜鸟,希望高人能解答一下。
show varialbes like 'char%';看一下你的字符集比较规则。
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | gbk |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | gbk |
| character_set_system | utf8
mysql> show create table tt;
+-------+---------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+---------------------------------------------------------------------------------------+
| tt | CREATE TABLE `tt` (
`id` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk |
mysql> select * from tt where BINARY id like BINARY '%田%'; Empty set为什么一定要用binary呢???
mysql> select id from tt where id like '%田%';
+------+
| id |
+------+
| 田园 |
| 种田 |
| 田田 |
| 田里 |
| 出田 |
这不是也能查出来么????
但如果你是不同的字符集,则会有问题。
gb2312 的 田 是 CCEF ,但 utf8 则 完全不同了。
select * from company where company_name like BINARY '%田%'
只能查出部分结果,比如能查出:“田园”“种田”“田田”
却查不出:“田里”“出田”等;
去掉或加上BINARY也是一样,网上mysql模糊查询大部分的问题是查出很多不相关的数据,而我碰到的情况是查出的都是相关的,但就是不全!数据库字段:gbk_bin
页面编码:gb2312
mysql> select * from company where company_name like '%田%'
mysql> show create table company ;mysql> show variables like 'char%';
+--------------------------+-------
| Variable_name | Value
+--------------------------+-------
| character_set_client | latin1
| character_set_connection | latin1
| character_set_database | latin1
| character_set_filesystem | binary
| character_set_results | latin1
| character_set_server | latin1
| character_set_system | utf8
| character_sets_dir | C:\Pro
+--------------------------+-------
8 rows in set (0.00 sec)mysql> show variables like 'coll%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)mysql>
如果不正确,把结果贴出来。