SQL Select - 搜索词包含的位置'。

时间:2015-04-29 16:05:35

标签: mysql sql

我试图在看起来有点像这样的表上进行MySQL SELECT查询:

-------------------------------
|  id  |  domain      | etc...
|------+--------------+--------
|  1   |  dev.howmuch |
|------+--------------+--------
|  2   |  devhowmuch  |

目前我只想尝试简单的

SELECT * FROM `tbl_swad_apps` WHERE `domain` = 'devhowmuch'

但是只要我尝试

,哪个工作正常
SELECT * FROM `tbl_swad_apps` WHERE `domain` = 'dev.howmuch'

它没有返回任何结果,我的猜测是它试图将fullstop视为通配符或表引用(tablefield)。

如何让它纯粹以字符串形式查询?感谢

编辑:我很感谢帮助人员,但这些都不起作用: 没有尾随或前导空格。如果我尝试LIKE '%howmuch%'两个结果都会出现,如果我LIKE '%.howmuch%',则不会出现任何结果。

根据要求

十六进制(域)结果:

1 dev.howmuch 646576A9686F776D756368
2 devhowmuch 646576686F776D756368

2 个答案:

答案 0 :(得分:2)

单元格包含:

d  e  v  .  h  o  w  m  u  c  h
64 65 76 A9 68 6F 77 6D 75 63 68

Full stop应该是2E(它是一个7位ASCII字符,因此它在许多编码中都是相同的字节,包括UTF-8):

mysql> SELECT HEX('.');
+----------+
| HEX('.') |
+----------+
| 2E       |
+----------+
1 row in set (0.00 sec)

但你有A9。这不是一个7位ASCII字符,我们不知道你的数据使用什么编码,所以我们无法分辨它是什么(但它显然不是一个点)。在ISO-8859-1和Windows-1252中,它是版权符号(©)。在UTF-8中,它是一个无效字符,通常由许多客户显示为REPLACEMENT CHARACTER( )。

答案 1 :(得分:1)

你不诚实。

期间没有问题。

这是一个证据: http://sqlfiddle.com/#!9/2e380/1

问题应该是表中包含一些非打印字符的实际值。

所以你可以选择 - 修复表格中的值。

或使用其他查询:

SELECT * FROM `tbl_swad_apps` WHERE `domain` LIKE '%dev.howmuch%';

甚至:

SELECT * FROM `tbl_swad_apps` WHERE `domain` LIKE '%dev%.%howmuch%';

http://sqlfiddle.com/#!9/2e380/4