【问题标题】:Mysql query can't remove word from queryMysql查询无法从查询中删除单词
【发布时间】:2013-02-17 20:43:25
【问题描述】:
$terms = $db->GetAll("SELECT `TITLE`, `HITS` FROM `{$tables['category']['name']}` WHERE `STATUS` = '2' && `TITLE` NOT LIKE '%and%' ORDER BY `HITS` DESC LIMIT 0, $limit");

试图从 MYSQL 查询中删除单词“and”。

在我的数据库中,我有: 商业与经济 运动休闲

我希望我的查询显示 Business、Economy、Sports、Recreation 且不包含“and”一词。

查询并没有完全按照我的想法工作,而是删除了任何包含“and”字样的 TITLE。

【问题讨论】:

  • 不要在 mySQL 中这样做。从数据库中获取它并在 PHP 中完成

标签: php sql word


【解决方案1】:

$terms = $db->GetAll("SELECT REPLACE(`TITLE`, 'and', '') AS `TITLE`, `HITS` FROM `{$tables['category']['name']}` WHERE `STATUS` = '2' ORDER BY `HITS` DESC LIMIT 0, $limit");

【讨论】:

  • 这将返回 Business EconomySports Recreation。你仍然需要处理它。
  • 效果如何?它将 and 替换为空,因此您在 Business 或 Sports 之后没有逗号
  • 我在标签云中使用查询。之前它会将“和”标记为最大的标签词之一。
  • 我没有包含所有代码,所以也许这就是它令人困惑的原因。
【解决方案2】:
$terms = $db->GetAll("SELECT replace(`TITLE`, 'and', ',') as title `HITS` FROM `{$tables['category']['name']}` WHERE `STATUS` = '2' ORDER BY `HITS` DESC LIMIT 0, $limit");

未经测试,但应该可以工作。 replace function is documented here

【讨论】:

    【解决方案3】:
    SELECT replace(title,'and',','), hits
    FROM {$tables['category']['name']}` 
    WHERE STATUS = '2'
    ORDER BY hits DESC
    LIMIT 0
    

    【讨论】:

    • 我不打算删除包含“和”的标题,即使代码是这样编写的。我只是想从商业和经济以及体育和娱乐中排除“和”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 2014-12-23
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多