我有一个用户表,其中我有三个字段id,email,u_firstname,u_status 其中我必须在这个表格上使用案例函数进行搜索。
users table structure
...........................................................................
id email u_firstname status(0=inactive,1=active)
...........................................................................
1 varunjoshi919@gmail.com varun 1
2 abc@gmail.com abc 0
我写下面的查询,其中我使用了mysql的case函数 如果0来了,那就像那样工作,然后非活动就像一个字符串或 如果1来自db,那么active将显示如下
查询
SELECT `id`,`email`,`u_firstname`,case u_status when '0' then 'inactive' when '1' then 'active' end as status FROM `users`
运行上述查询后,我得到了这个输出 来自用户表结构
...........................................................................
id email u_firstname status(0=inactive,1=active)
...........................................................................
1 varunjoshi919@gmail.com varun active
2 abc@gmail.com abc inactive
在此之后,如果我写的话,我必须在这张桌子上进行搜索 ac或任何用户状态的起始字母,然后我们将获得所有活动用户的列表。
当我在搜索框中键入活动用户记录时,我需要此输出
...........................................................................
id email u_firstname status(0=inactive,1=active)
...........................................................................
1 varunjoshi919@gmail.com varun active
我已经尝试过以下查询,但它没有给出任何记录。
SELECT `id`,`email`,`u_firstname`,case u_status when '0' then 'inactive' when '1' then 'active' end as status FROM `users` where `u_status` like 'ac%'
答案 0 :(得分:1)
您可以使用LIKE
SELECT t.*
FROM ( Your Query ) t
WHERE t.status LIKE 'ac%' -- for active
//WHERE t.status like 'in%' -- for inactive
%
通配符基本上说:没有任何内容或所有内容,而不是标志。
actkfkd LIKE 'ac%' -- TRUE
atcdas LIKE 'ac%' -- FALSE
ac LIKE 'ac%' -- TRUE
答案 1 :(得分:0)
您必须过滤第一个查询的结果:
SELECT * FROM
(SELECT `id`,`email`,`u_firstname`,case u_status when '0' then 'inactive' when '1' then 'active' end as status FROM `users`) a
where `status` like 'ac%'
答案 2 :(得分:0)
我认为你应该使用别名status
而不是原来的u_status
列。
`SELECT `id`,`email`,`u_firstname`,
case u_status when '0' then 'inactive'
when '1' then 'active' end as status
FROM `users`
where `status` like 'ac%'