简体   繁体   English

来自CASE语句的SQL搜索脚本

[英]SQL search script from CASE statement

Please help me with this. 请帮我解决一下这个。

SELECT
   Username,
   CASE
      WHEN UserType = 'DUMMY' AND UserLoginId = Username THEN 'Awaiting_Approval'
      WHEN UserType = 'DUMMY' AND UserLoginId != Username THEN 'Checking_Approval'
      ELSE 'No_Status_Yet'
   END AS UserStatus
FROM MyTable
WHERE UserStatus LIKE '%king%'

I try to create simple search by text from database, so I can search by middle of the text. 我尝试通过数据库中的文本创建简单搜索,因此我可以在文本的中间搜索。 Because of there is no status column in there, I create it myself from combination of 2 column details. 由于那里没有状态列,我自己从2列详细信息的组合创建它。 Can anyone help me. 谁能帮我。 Thanks. 谢谢。

You can't use a alias directly in WHERE clause, try the below one 您不能在WHERE子句中直接使用别名,请尝试下面的一个

SELECT  *
FROM    (
    SELECT  Username,
           CASE
              WHEN UserType = 'DUMMY' AND UserLoginId = Username THEN 'Awaiting_Approval'
              WHEN UserType = 'DUMMY' AND UserLoginId != Username THEN 'Checking_Approval'
              ELSE 'No_Status_Yet'
           END AS UserStatus
    FROM MyTable
)   AS  D
WHERE UserStatus LIKE '%king%'

As an alternative, you could add your case expression on the WHERE clause. 或者,您可以在WHERE子句中添加case表达式。

Like 喜欢

SELECT
   Username,
   'Checking_Approval' AS UserStatus
FROM MyTable
WHERE 1 = CASE WHEN UserType = 'DUMMY' AND UserLoginId != Username THEN 1
          --other conditions that should be returned here
            ELSE 0
          END

You can use HAVING keyword (works only in MySQL): 您可以使用HAVING关键字(仅适用于MySQL):

SELECT
    Username,
    CASE
        WHEN UserType = 'DUMMY' AND UserLoginId = Username THEN 'Awaiting_Approval'
        WHEN UserType = 'DUMMY' AND UserLoginId != Username THEN 'Checking_Approval'
        ELSE 'No_Status_Yet'
        END AS UserStatus
FROM MyTable
HAVING UserStatus LIKE '%king%'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM