簡體   English   中英

來自CASE語句的SQL搜索腳本

[英]SQL search script from CASE statement

請幫我解決一下這個。

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%'

我嘗試通過數據庫中的文本創建簡單搜索,因此我可以在文本的中間搜索。 由於那里沒有狀態列,我自己從2列詳細信息的組合創建它。 誰能幫我。 謝謝。

您不能在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%'

或者,您可以在WHERE子句中添加case表達式。

喜歡

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

您可以使用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