【问题标题】:MySQL SELECT values with more than three wordsMySQL SELECT 值超过三个单词
【发布时间】:2014-11-04 03:40:41
【问题描述】:

我目前有以下代码

select *
FROM list
WHERE name LIKE '___'
ORDER BY name;

我正在尝试让它只显示包含三个或更多单词的名称。 它只显示三个字符的名称 我似乎无法为此计算出正确的语法。

感谢任何帮助 谢谢你

【问题讨论】:

  • 你的意思是三个字母或单词?
  • 三个字@OvaisKhatri

标签: mysql sql select where-clause sql-like


【解决方案1】:

如果你假设没有双空格,你可以这样做:

WHERE name like '% % %'

获取包含三个或更多单词的名称。

如果您可以使用双空格(或其他标点符号),那么您可能需要正则表达式。比如:

WHERE name REGEXP '^[^ ]+[ ]+[^ ]+.*$'

【讨论】:

  • 我怀疑沿着这些思路有一个更优雅的解决方案 - 但我在正则表达式方面非常糟糕
  • WHERE name like '% % % %' 只会得到包含 4 个或更多单词的名称。
  • 把它改成四个或更多的单词会是这样吗 WHERE title REGEXP '^[^ ]+[ ]+[^ ]+[ ]+[^ ]+[ ]+[^ ] .*$'
  • @Linger 。 . .谢谢你。今天早上我数不清了。
【解决方案2】:

您可以统计单词的数量,然后选择等于或大于 3 个单词的单词。

    SELECT * FROM list
    HAVING LENGTH(name) - LENGTH(REPLACE(name, ' ', ''))+1 >= 3
    ORDER BY name

DEMO HERE

*即使你有多个空格也不会影响这里检查this

【讨论】:

    【解决方案3】:

    我相信你所追求的是

    SELECT *
    FROM list
    WHERE name LIKE '% % %'
    ORDER BY name;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      • 1970-01-01
      • 2010-10-30
      • 2014-09-25
      • 1970-01-01
      相关资源
      最近更新 更多