【问题标题】:select where like A% gives no results but %A does php选择像 A% 这样没有结果但 %A 没有结果的地方
【发布时间】:2014-06-18 18:27:15
【问题描述】:

我的表格总共有 40.000 行,其中至少有 2.000 多行以字母 A 开头。

现在我的SELECT 查询在我使用时会返回一些结果

$selectGames = mysql_query("SELECT * FROM Games WHERE GameName LIKE '%A'");

但是当我使用时:

$selectGames = mysql_query("SELECT * FROM Games WHERE GameName LIKE 'A%'");

总共返回 0 行。这是为什么呢?

【问题讨论】:

  • 您是从 phpmyadmin 还是通过 mysql_ 手动插入 A% like 游戏名称?因为如果手动然后你需要检查这些值是否在开始时有空格发生在我身上:D:/
  • 啊,我明白了,整个表确实是由 mysql 插入的,它在名称的后面插入了一个空格,但在前面没有,但它确实解决了问题
  • Gald 它对你有用 :)

标签: php mysql sql select sql-like


【解决方案1】:

%A 表示“字符串的结尾是字母 A”。 A% 是相反的“以字母 A 开头的字符串”

       %A   A%
APPLE  N    Y
ABBA   Y    Y
GOUDA  Y    N

它们是完全不同的匹配项,因此您的两个查询不等价。

此外,请确保您的表的排序规则设置为不区分大小写的匹配。如果区分大小写,则aA 将被区别对待。

编辑:同样,记住空格很重要:

mysql> select 'gouda ' like '%a';
                    ^---note the space here
+--------------------+
| 'gouda ' like '%a' |
+--------------------+
|                  0 |
+--------------------+
1 row in set (0.00 sec)

【讨论】:

  • 精美的水果、精美的音乐和精美的奶酪 ;-)
  • 是的,我知道它不等效,但为什么 A% 不起作用,因为那是我需要的。我尝试了 %A 作为测试,但效果很好,但我需要它。
  • 好吧,你有多少记录实际上以字母A 结尾?请注意,abba[space] 之类的内容将不匹配,因为该字符串以空格结尾,而不是 a
  • 我也尝试过将所有结果设为大写,并且查询中的 A 也导致 0 个结果
  • 我正在制作一个页面,您可以在其中从字母表中选择一个字母,它将从数据库中获取以该字母开头的所有内容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
  • 2016-09-01
  • 1970-01-01
  • 2012-01-12
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多