gpt4 book ai didi

mysql - 如何根据 CASE 语句的值编写 WHERE 语句?

转载 作者:可可西里 更新时间:2023-11-01 07:50:02 33 4
gpt4 key购买 nike

以下查询返回表 names 中所有 new_name 的结果集

SELECT
CASE
WHEN nickname = '' THEN fullname ELSE nickname END AS new_name,
FROM names

我正在尝试使用以下查询按 new_name 进行搜索

SELECT
CASE
WHEN nickname = '' THEN fullname ELSE nickname END AS new_name,
FROM names
WHERE new_name LIKE '%Joh%'

但是我得到了错误

“where 子句”中的未知列“new_name”

有没有一种方法可以在不使用子查询的情况下使用此功能?

最佳答案

如果您在 where 子句中重复 case,该语句将起作用:

SELECT
CASE
WHEN nickname = '' THEN fullname ELSE nickname END AS new_name
FROM names
WHERE (CASE WHEN nickname = '' THEN fullname ELSE nickname END) LIKE '%Joh%'

它不会很快,因为它不会使用索引,但它应该可以工作。

更好的方法如下:

SELECT
CASE
WHEN nickname = '' THEN fullname ELSE nickname END AS new_name
FROM names
WHERE (nickname like '%Joh%') or (fullname LIKE '%Joh%')

这将返回相同的结果,但它可以使用 nicknamefullname 上的索引,如果您定义它们,EDIT 并更改第二个LIKE 的操作数不使用前导 %

关于mysql - 如何根据 CASE 语句的值编写 WHERE 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10081860/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com