我试图在看起来有点像这样的表上进行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视为通配符或表引用(table
。field
)。
如何让它纯粹以字符串形式查询?感谢
编辑:我很感谢帮助人员,但这些都不起作用:
没有尾随或前导空格。如果我尝试LIKE '%howmuch%'
两个结果都会出现,如果我LIKE '%.howmuch%'
,则不会出现任何结果。
十六进制(域)结果:
1 dev.howmuch 646576A9686F776D756368
2 devhowmuch 646576686F776D756368
答案 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%';