Php MySQL“;例如;搜索不';行不通
我已经通过“LOAD DATA Infle”在MySQL中导入了一个.txt数据库,看起来一切都正常,唯一的问题是如果我用下面的查询在数据库中搜索一条记录:Php MySQL“;例如;搜索不';行不通,php,mysql,sql,search,Php,Mysql,Sql,Search,我已经通过“LOAD DATA Infle”在MySQL中导入了一个.txt数据库,看起来一切都正常,唯一的问题是如果我用下面的查询在数据库中搜索一条记录: "SELECT * FROM hobby WHERE name LIKE 'Beading'" 它返回0行,而如果使用 ""SELECT * FROM hobby WHERE name LIKE '%Beading%'" 它返回1行,即使存在一条名为Beading的记录。有人知道它依赖于什么吗?第一个不起作用,因为像station
"SELECT * FROM hobby WHERE name LIKE 'Beading'"
它返回0行,而如果使用
""SELECT * FROM hobby WHERE name LIKE '%Beading%'"
它返回1行,即使存在一条名为Beading的记录。有人知道它依赖于什么吗?第一个不起作用,因为像station一样,你应该使用
'%search word%'
你应该用这个
"SELECT * FROM hobby WHERE name LIKE '% Beading %' or name LIKE '% Beading'
or name LIKE 'Beading %' or name LIKE 'Beading'"
第一个不起作用,因为像station一样,您应该使用
'%search word%'
你应该用这个
"SELECT * FROM hobby WHERE name LIKE '% Beading %' or name LIKE '% Beading'
or name LIKE 'Beading %' or name LIKE 'Beading'"
使用SQL
时,如
:
您应该使用通配符标识符,例如(或不是):
“%word”
-返回值以字母“word”结尾的结果
“word%”
-返回以字母“word”开头的结果
%word%
-返回包含字母“word”的结果
"SELECT * FROM hobby WHERE name='Beading'"
但是像“串珠”这样的也应该起作用,所以这可能是一个空格问题或区分大小写的问题
当您想确保结果完整时,需要注意排序规则的大小写(敏感性)
假设您的表是UTF…CS,并且您希望进行不区分大小写的搜索,那么您应该在SQL查询中声明它,例如:
SELECT * FROM hobby WHERE name COLLATE UTF8_GENERAL_CI LIKE 'beading'
尝试测试不同的方法,看看什么最适合您的目标。当使用SQL时,如
:
您应该使用通配符标识符,例如(或不是):
“%word”
-返回值以字母“word”结尾的结果
“word%”
-返回以字母“word”开头的结果
%word%
-返回包含字母“word”的结果
还有一些模式搜索组合,如:
“abc”就像“abc”一样真实
像“a%”一样的“abc”是真的
像“b”一样的“abc”是真的
“abc”类似于“c”假
如果想要精确匹配,应使用:
"SELECT * FROM hobby WHERE name='Beading'"
但是像“串珠”这样的也应该起作用,所以这可能是一个空格问题或区分大小写的问题
当您想确保结果完整时,需要注意排序规则的大小写(敏感性)
假设您的表是UTF…CS,并且您希望进行不区分大小写的搜索,那么您应该在SQL查询中声明它,例如:
SELECT * FROM hobby WHERE name COLLATE UTF8_GENERAL_CI LIKE 'beading'
尝试测试不同的方法,看看什么最适合您的目标。我知道,但我需要知道搜索到的单词是否在DB上,而使用%word%时,我只知道有相似的单词@echo_Mei不明白你的意思,但这将返回所有有此珠饰的名称是的,我知道它将返回所有有珠饰的名称,但是我只需要一个单词Beading你可能需要在Beading周围加空格试试这个更新的答案我知道但我需要知道搜索到的单词是否在DB上,而使用%word%我只知道有相似的单词@echo_Mei不明白你的意思,但这将返回所有有此珠饰的名称是的,我知道它将返回所有有珠饰的名称,但我只需要一个单词珠饰,你可能需要在珠饰周围加空格试试这个更新的答案