Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Oracle的SQL中使用REGEXP_SUBSTR用自定义消息替换空插槽_Sql_Oracle_Regexp Substr - Fatal编程技术网

如何在Oracle的SQL中使用REGEXP_SUBSTR用自定义消息替换空插槽

如何在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:(注意:我原

我有一个任务,我有一个“供应商”表,每个供应商都有一个描述。有些描述提供了电子邮件地址,而其他描述则没有。我只需要显示提供的电子邮件,如果没有,我需要显示“未提供电子邮件”。我可以很容易地提取电子邮件地址,但我不知道如何用请求的邮件替换所有的空插槽

我尝试了几种可能非常错误的方法:

尝试1:

选择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(显然不是什么大问题,但我只需要电子邮件,即我不需要“商店名称、描述”部分,但我可以自己做)