使用 LIKE 词在 mySQL 中定义自定义 ORDER BY 顺序
Define a custom ORDER BY order in mySQL using the LIKE word
如何创建自定义顺序,按 NAME
对行进行排序,其中第一行的名称中有 Bob,后跟名称为 Alex 的行?
为了解释我的意思:如果 NAME = 'Bob' 和 IF NAME = 'Alex':
,我做了以下查询来对结果进行排序
SELECT * FROM table
ORDER BY CASE `NAME`
WHEN 'Bob' THEN 1
WHEN 'Alex' THEN 2
ELSE 3
END
但这仅在 NAME 完全等于 Bob 或 Alex 时有效。如果 NAME 中有 Bob 或 Alex,我想修改它来排序,基本上如果 NAME LIKE '%Bob%'
和 NAME LIKE '%Alex%'
。我尝试了类似下面的方法,但它不起作用。
ORDER BY CASE `NAME`
WHEN LIKE '%Bob%' THEN 1
WHEN LIKE '%Alex%' THEN 2
ELSE 3
END
正确的语法是什么?
使用 CASE
的另一种形式,在 WHEN
中指定条件而不是值。
ORDER BY CASE
WHEN NAME LIKE '%Bob%' THEN 1
WHEN NAME LIKE '%Alex%' THEN 2
ELSE 3
END
如何创建自定义顺序,按 NAME
对行进行排序,其中第一行的名称中有 Bob,后跟名称为 Alex 的行?
为了解释我的意思:如果 NAME = 'Bob' 和 IF NAME = 'Alex':
SELECT * FROM table
ORDER BY CASE `NAME`
WHEN 'Bob' THEN 1
WHEN 'Alex' THEN 2
ELSE 3
END
但这仅在 NAME 完全等于 Bob 或 Alex 时有效。如果 NAME 中有 Bob 或 Alex,我想修改它来排序,基本上如果 NAME LIKE '%Bob%'
和 NAME LIKE '%Alex%'
。我尝试了类似下面的方法,但它不起作用。
ORDER BY CASE `NAME`
WHEN LIKE '%Bob%' THEN 1
WHEN LIKE '%Alex%' THEN 2
ELSE 3
END
正确的语法是什么?
使用 CASE
的另一种形式,在 WHEN
中指定条件而不是值。
ORDER BY CASE
WHEN NAME LIKE '%Bob%' THEN 1
WHEN NAME LIKE '%Alex%' THEN 2
ELSE 3
END