【问题标题】:MySQL Storing a VariableMySQL 存储变量
【发布时间】:2018-01-26 14:28:13
【问题描述】:

我有一个查询要使用 searchString 对连接的名字和姓氏进行搜索。这是我的代码:

  $query = " SELECT user_id, firstname, lastname, picUrl
              FROM user
              WHERE CONCAT(firstname, ' ', lastname) LIKE '%" . $searchString . "%'
              ORDER BY CASE WHEN CONCAT(firstname, ' ', lastname) = '" . $searchString . "' THEN 0
                            WHEN CONCAT(firstname, ' ', lastname) = '" . $searchString . "%' THEN 1
                            WHEN CONCAT(firstname, ' ', lastname) = '%" . $searchString . "%' THEN 2
                            WHEN CONCAT(firstname, ' ', lastname) = '%" . $searchString . "' THEN 3
                            ELSE 4
                        END, CONCAT(firstname, ' ', lastname) ASC";

有没有办法通过将“CONCAT(firstname, ' ', lastname)”存储为名为 full_name 的变量来使我的代码更简洁?

例子,

WHERE full_name LIKE ... 

WHEN full_name = ...

【问题讨论】:

  • 你想达到什么目的??你能分享你的查询的示例输出吗?

标签: php mysql variables search redundancy


【解决方案1】:
$query = " SELECT user_id, firstname, lastname, picUrl, 
                  CONCAT(firstname, ' ', lastname) AS full_name
          FROM user
          WHERE full_name LIKE '%" . $searchString . "%'
          ORDER BY CASE WHEN full_name = '" . $searchString . "' 
                            THEN 0
                        WHEN full_name = '" . $searchString . "%' 
                            THEN 1
                        WHEN full_name = '%" . $searchString . "%' 
                            THEN 2
                        WHEN full_name = '%" . $searchString . "' 
                            THEN 3
                        ELSE 4
                    END, full_name ASC";

根据您的需要,您可以在 SELECT 部分省略 firstname, lastname,

【讨论】:

    【解决方案2】:

    上述方法无效。不过我发现这是可行的:

    $query = " SELECT user_id, firstname, lastname, picUrl, firstname + ' ' + lastname as fullname  
               FROM user
               WHERE CONCAT(firstname, ' ', lastname) LIKE '%" . $searchString . "%'
               ORDER BY CASE WHEN fullname = '" . $searchString . "' THEN 0 
                             WHEN fullname = '" . $searchString . "%' THEN 1
                             WHEN fullname = '%" . $searchString . "%' THEN 2
                             WHEN fullname = '%" . $searchString . "' THEN 3
                             ELSE 4
                        END, full_name DESC";
    

    【讨论】:

      猜你喜欢
      • 2012-04-09
      • 1970-01-01
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      • 2010-12-18
      • 2014-04-18
      • 1970-01-01
      相关资源
      最近更新 更多