日期:2014-05-16  浏览次数:20680 次

mysql查询时关于结果集中存在_~\问题怎么解决
select * from userInfo where uname like '%TT%' 查询出来的结果是ok的
但是如果是select * from userInfo where uname like '%T_T%' 结果中就有问题,包括 like '%san~%' 和 like '%gren\%'
userInfo表中 uname 的值有 TTai t_t 0T_T0 san~qiang sanqiang gerenyouxi gren\youxi

------解决方案--------------------
\~和\\,转义都是用斜杠
------解决方案--------------------
通配符 描述 
% 替代一个或多个字符 
_ 仅替代一个字符 
[charlist] 字符列中的任何单一字符 
[^charlist]

或者

[!charlist]
 不在字符列中的任何单一字符 

------解决方案--------------------
~ 应该不需要,你直接查。

\ 改成 \\ like '%gren\\%'
------解决方案--------------------
SQL code

mysql> create table test(a varchar(30));
Query OK, 0 rows affected (0.34 sec)

mysql> insert into test values('TTai'), ('t_t'), ('0T_T0'), ('san~qiang'), ('sanqiang'), ('gerenyouxi'), ('gren\\youxi');
Query OK, 7 rows affected (0.08 sec)
Records: 7  Duplicates: 0  Warnings: 0

mysql> select * from test;
+------------+
| a          |
+------------+
| TTai       |
| t_t        |
| 0T_T0      |
| san~qiang  |
| sanqiang   |
| gerenyouxi |
| gren\youxi |
+------------+
7 rows in set (0.02 sec)

mysql> select * from test where a like '%T_T%';
+-------+
| a     |
+-------+
| t_t   |
| 0T_T0 |
+-------+
2 rows in set (0.00 sec)

mysql> select * from test where a  like '%san~%';
+-----------+
| a         |
+-----------+
| san~qiang |
+-----------+
1 row in set (0.00 sec)