繁体   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