我通过“LOAD DATA INFILE”在MySQL中导入了一个.txt数据库,一切似乎都有效,唯一的问题是如果我使用以下查询搜索数据库中的记录:
"SELECT * FROM hobby WHERE name LIKE 'Beading'"
它返回0行,而如果我使用
""SELECT * FROM hobby WHERE name LIKE '%Beading%'"
它返回1行,即使存在一个name = Beading的记录。有人知道它可以依赖什么?
答案 0 :(得分:2)
使用sql LIKE
时:
您应该使用通配符标识符,例如(或不):
'%word'
- 返回值以字母结尾的结果:“word”。'word%'
- 以字母开头的结果:“word”。%word%
- 返回包含字母的结果:“word”where。还有一些模式搜索组合,如:
'abc'LIKE'abc'true
'abc'喜欢'%'真实
'abc'LIKE' b 'true
'abc'LIKE'c'false
如果你想要完全匹配,你应该使用:
"SELECT * FROM hobby WHERE name='Beading'"
但是LIKE 'Beading'
也应该有用,所以它可能是空格问题或区分大小写的问题。
如果您想确保结果完整,则需要注意整理案例(敏感度)。
假设您的表是UTF ... CS并且您想要进行不敏感的案例搜索,您应该在sql查询中声明它,例如:
SELECT * FROM hobby WHERE name COLLATE UTF8_GENERAL_CI LIKE 'beading'
尝试测试不同的方法,看看最适合您的目标。
答案 1 :(得分:1)
第一个不起作用,因为Like语句应该使用'%search word%'
你应该使用这个
"SELECT * FROM hobby WHERE name LIKE '% Beading %' or name LIKE '% Beading'
or name LIKE 'Beading %' or name LIKE 'Beading'"