如何在Oracle的SQL中使用REGEXP_SUBSTR用自定义消息替换空插槽
我有一个任务,我有一个“供应商”表,每个供应商都有一个描述。有些描述提供了电子邮件地址,而其他描述则没有。我只需要显示提供的电子邮件,如果没有,我需要显示“未提供电子邮件”。我可以很容易地提取电子邮件地址,但我不知道如何用请求的邮件替换所有的空插槽 我尝试了几种可能非常错误的方法: 尝试1:如何在Oracle的SQL中使用REGEXP_SUBSTR用自定义消息替换空插槽,sql,oracle,regexp-substr,Sql,Oracle,Regexp Substr,我有一个任务,我有一个“供应商”表,每个供应商都有一个描述。有些描述提供了电子邮件地址,而其他描述则没有。我只需要显示提供的电子邮件,如果没有,我需要显示“未提供电子邮件”。我可以很容易地提取电子邮件地址,但我不知道如何用请求的邮件替换所有的空插槽 我尝试了几种可能非常错误的方法: 尝试1: 选择REGEXP\u SUBSTR(说明,'[A-Za-z0-9.\%+-]+@[A-Za-z0-9.-]+\[A-Za-z]{2,4}')或“未提供电子邮件”或“供应商电子邮件”; 尝试2:(注意:我原
选择REGEXP\u SUBSTR(说明,'[A-Za-z0-9.\%+-]+@[A-Za-z0-9.-]+\[A-Za-z]{2,4}')或“未提供电子邮件”或“供应商电子邮件”;
尝试2:(注意:我原以为这不会正常工作,但由于缺乏其他想法,决定尝试一下)
选择REGEXP_SUBSTR(说明,'[A-Za-z0-9.\%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}')| |“未提供电子邮件”来自供应商的“供应商电子邮件”;
尝试3:
选择REGEXP\u SUBSTR(说明,'[A-Za-z0-9.\%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}','未提供电子邮件')“供应商电子邮件”;
尝试4:
选择REGEXP\u SUBSTR(说明,'[A-Za-z0-9.\%+-]+@[A-Za-z0-9.-]+\[A-Za-z]{2,4}')供应商的“供应商电子邮件”;
从供应商处选择替换(“-”,“未提供电子邮件”);
我试着在谷歌上查到这一点,在措辞上有所不同,而我的教科书并没有清楚地解释这一具体情况
这是我正在使用的表格,用于有关结果的上下文:
插入到供应商中
值('二手读物',
“仅旧书批发商,位于芝加哥,634.555-8787”);
插入到供应商中
值(‘剩余’,
“实体店位于西雅图,愿意填补推荐销售,sales@leftovers.com');
插入到供应商中
值('再次读取',
“二手书店连锁店,寻求在线销售合作伙伴,位于美国西部,919-555-3333”);
插入到供应商中
价值(‘绑定储户’、‘二手图书销售员,库存包括国际图书,402-555-2323’);
插入到供应商中
价值(“图书回收商”、“二手图书连锁店,位于加拿大,销量大,888.555.5204”);
插入到供应商中
价值观(‘页面冲击’、‘专业书籍和平面小说的图书销售商’,help@pageshock.com');
插入到供应商中
价值(“重新定价”,“二手书供应商,仅批发,华盛顿特区,555-0122”);
犯罪
预期产量为
Supplier emails
------------------------------------------------------------------
No email provided
--------------------
sales@leftovers.com
--------------------
No email provided
--------------------
No email provided
--------------------
No email provided
--------------------
help@pageshock.com
--------------------
No email provided
但输出要么是错误,要么是我预期不起作用的错误
Supplier emails
------------------------------------------------------------------
No email provided
-------------------------------------
sales@leftovers.comNo email provided
-------------------------------------
No email provided
-------------------------------------
No email provided
-------------------------------------
No email provided
-------------------------------------
help@pageshock.comNo email provided
-------------------------------------
No email provided
您需要使用
NVL
或COALESCE
功能:
SELECT STORE_NAME,
DESCRIPTION,
NVL(REGEXP_SUBSTR(description, '[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}'),
'No email provided') AS EMAIL
FROM SUPPLIERS
NVL
接受两个参数。如果第一个参数不为NULL,则返回它;否则返回第二个参数
COALESCE
类似于NVL
,但它接受您想要提供的尽可能多的参数,并返回第一个不为NULL的参数。如果所有参数都为NULL,则COALESCE将返回NULL
祝你好运。为什么你的插入有3、4、5列插入,却没有给出列名!!!!它不适用于oracle!!!以表格形式显示您的表格@nikhilsugandh:每一个插入都提供两个值-一个是商店名称,另一个是描述。@BobJarvis哦,我错过了单引号,谢谢!!!埃米尔怎么样part@nikhilsugandh-上面的查询生成OP在其问题中指定的输出。我有点不知道还需要什么???我已经向上投票,但用户也希望随电子邮件一起提供电子邮件。一个小的连接就可以了| | |谢谢,NVL功能。。。功能lol(显然不是什么大问题,但我只需要电子邮件,即我不需要“商店名称、描述”部分,但我可以自己做)