实施 REGEXP_SUBSTR 困难
我正在 Oracle 10g 上运行 SQL 查询。我有两个表(下面提供的示例数据)。我正在尝试提取一些字段 从表 t2 中获取并更新表 t1 中的空列。我遇到以下错误:
ORA 01722:无效数字(指向 REGEXP_SUBSTR)
我知道这是因为非数字数据(例如“NO code {..”) .} " ) 在我的表中,我尝试使用 REGEXP_SUBSTR* 表达式提取 我想知道是否有人可以建议我一些替代实现来帮助我“复制整个字符串”而不是抛出异常。
MERGE
INTO temptab t1
USING directory_list t2
ON (REGEXP_SUBSTR(codelist, '[^.]+', 1) = t2.tcode)
WHEN MATCHED THEN
UPDATE
SET t1.tcode = t2.tcode,
t1.des = t2.des
temptab t1
Codelist | T1.tcode | T1.des
1111.1.803.12.X.Z
1000.2.3232.145.M.P
300.12.2982.45.X.Y
NO code {...}
1111.1.803.12.X.Z
directory_list t2
tcode | DES
1000 | powervalue100
300 | powermax300
20 | powermin20
NO code {...} | maxvalue plus
1000 | powervalue100
谢谢,
新手
I'm running SQL queries on Oracle 10g. I have two tables ( sample data provided below ). i'm trying to extract some fields
from Table t2 and update the empty columns in table t1. I'm encountering the following error:
ORA 01722: Invalid Number ( pointing to REGEXP_SUBSTR )
I understand this is because of non - numeric data ( like " NO code {...} " ) in my table, that I'm trying to extract using the REGEXP_SUBSTR* Expression
I was wondering if someone can suggest me some alternative implementations to help me "copy the entire string" instead of throwing an exception.
MERGE
INTO temptab t1
USING directory_list t2
ON (REGEXP_SUBSTR(codelist, '[^.]+', 1) = t2.tcode)
WHEN MATCHED THEN
UPDATE
SET t1.tcode = t2.tcode,
t1.des = t2.des
temptab t1
Codelist | T1.tcode | T1.des
1111.1.803.12.X.Z
1000.2.3232.145.M.P
300.12.2982.45.X.Y
NO code {...}
1111.1.803.12.X.Z
directory_list t2
tcode | DES
1000 | powervalue100
300 | powermax300
20 | powermin20
NO code {...} | maxvalue plus
1000 | powervalue100
Thanks,
Novice
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用 CASE 来检测何时没有“.”。在代码表中。
You could use CASE to detect when there's no "." in codelist.