[英]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.