簡體   English   中英

檢查 ROW 中的 EMAIL 格式並在 SELECT 查詢中返回值

[英]check for EMAIL format in ROW and return value inside SELECT query

我有一個名為 user_data 的表和幾列像LOGIN_NAME

LOGIN_NAME列可能包含“emailformat@email.com”或僅包含“用戶名”

我需要知道我是否可以運行 select 查詢並返回 emailAddress 如果行具有 email 類型格式,否則返回 userName 如果它是非電子郵件格式。

示例 - (我正在嘗試使用此創建 JSON 格式):

這里 signInType 是用戶名,因為 Markus Dave 是一種非電子郵件格式(LOGIN_NAME 是一行的值為 Markus Dave ->

        {
          "signInType": "userName",
          "issuerAssignedId": "Markus Dave" 
        }

這里 signInType 是emailAddress因為 follyrichard@gmail.com 是 email 格式(LOGIN_NAME 是一行的值為 follyrichard@gmail.Z4D236D9A2D102C5FE6AD1C50DA4BEC

            {
              "signInType": "emailAddress",
              "issuerAssignedId": "follyrichard@gmail.com" 
            }
      

這是我可以生成的查詢:

SELECT 'signInType' AS signInType
        , LOGIN_NAME AS issuerAssignedId
        FROM USER_DATA        
        FOR JSON AUTO;

對於 signInType 字段,我需要使用相同的字段 LOGIN_NAME 並檢查它是否是 email 然后根據它進行准備。

我在表中有 10 個用戶,我需要創建 10 個字段 JSON。

您應該能夠使用case表達式:

SELECT (CASE WHEN LOGIN_NAME LIKE '%@%' THEN 'emailAddress' ELSE 'userName' END) as signInType,
       LOGIN_NAME AS issuerAssignedId
FROM USER_DATA        
FOR JSON AUTO;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM