我得到了这个小sql语句:
select
NVL(table2.usermail, 'some other mail') user_mail
from
table1, table2
where table1.user = table2.usernr
这很好用,但结果不是我需要的。
示例:
table1.user
给了我" KNL \ MarkZuckerbeg"
table2.usernr
给了我" MarkZuckerbeg"
table1.user = table2.usernr
现在是我不回复数据的原因。
任何想法如何解决这个问题?
我尝试使用INSTR但没有结果。
答案 0 :(得分:1)
您可以改为使用like
:
select coalesce(t2.usermail, 'some other mail') as user_mail
from table1 t1 join
table2 t2
on t1.user like '%' || t2.usernr || '%';
请注意其他更改:
JOIN
语法。简单规则:从不在FROM
子句中使用逗号。COALESCE()
代替NVL()
。 COALESCE()
是ANSI标准函数,更灵活(可能需要两个以上的参数)。答案 1 :(得分:1)
如果您愿意,可以使用INSTR
:
SELECT NVL(TABLE2.USERMAIL, 'some other mail') USER_MAIL
FROM TABLE2
INNER JOIN TABLE1
ON INSTR(TABLE1.USER, TABLE2.USERNR) > 0 OR
INSTR(TABLE2.USERNR, TABLE1.USER) > 0
祝你好运。