1

我通过“LOAD DATA INFILE”在 MySQL 中导入了一个 .txt 数据库,一切似乎都正常,唯一的问题是,如果我使用以下查询在数据库中搜索记录:

 "SELECT * FROM hobby WHERE name LIKE  'Beading'"

它返回 0 行,而如果我使用

""SELECT * FROM hobby WHERE name LIKE  '%Beading%'"

它返回 1 行,即使存在一条 name=Beading 的记录。有谁知道这取决于什么?

4

2 回答 2

3

使用 SQL 时LIKE

您应该使用通配符标识符,例如(或不使用):

  1. '%word'- 返回值以字母结尾的结果:“word”。

  2. 'word%'- 返回以字母开头的结果:“word”。

  3. %word%- 在任何地方返回包含字母的结果:“word”。

  4. 还有更多模式搜索组合,例如:

    'abc' 喜欢 'abc' 真

    'abc' LIKE 'a%' 真

    'abc'喜欢' b '真

    'abc' 喜欢 'c' 假

如果您想要完全匹配,您应该使用:

"SELECT * FROM hobby WHERE name='Beading'"

LIKE 'Beading'也应该工作,所以它可能是一个空格问题或区分大小写的问题。

当您想确保结果完整时,您需要注意整理大小写(敏感性)。

假设您的表是 UTF...CS,并且您想要进行不区分大小写的搜索,您应该在 SQL 查询中声明它,例如:

SELECT * FROM hobby WHERE name COLLATE UTF8_GENERAL_CI LIKE 'beading'

尝试测试不同的方法,看看哪种方法最适合您的目标。

于 2013-07-22T15:22:42.173 回答
1

第一个不起作用,因为 Like statment 你应该使用'%search word%'

你应该使用这个

      "SELECT * FROM hobby WHERE name LIKE  '% Beading %' or name LIKE '% Beading'
       or name LIKE 'Beading %' or name LIKE 'Beading'"
于 2013-07-21T22:48:39.550 回答