我有两个专栏
| 用户名|管理员列表|
| --|--|
| Abhi| Ayush; Abhi;格尔登|
| 苏曼|Ayush; Priti;格尔登|
| Satish| Ayush; Priti;克立提|
我想看看用户名中的用户是否存在于Oracle SQL中的ManagerList中
输出
| 用户名|管理员列表|is_available|
| --|--|--|
| Abhi| Ayush; Abhi;格尔登|Y|
| 苏曼|Ayush; Priti;格尔登|N|
| Satish| Ayush; Priti;克立提|Y|
4条答案
按热度按时间azpvetkf1#
我们可以使用
INSTR
函数:阅读文档中的函数。
根据您的数据查看此sample fiddle。
注意:@Littlefoot提出了一种更清晰的方法来使用这个用例中的函数,请参阅this answer。我不知道你是否需要这样做,但这样更安全。
juud5qan2#
注意
instr
或like
的 * 误报 *。我不知道这是否可能,但是-如果有人(经理)有一个以上的名字(这可能是;有些人有不止一个名字),你会得到错误的结果。举例来说:看到了吗?名为“Ayush Abhi Priti”的管理器确实包含“Abhi”,但是-在这种情况下,
Y
是正确的结果吗?考虑应用分隔符来避免这样的结果:
de90aj5v3#
我认为简单的LIKE操作符将为您工作-
Demo.
s4chpxco4#
使用
LIKE
或INSTR
将managerlist
与用户名进行比较并包括两个字符的周围字符:或:
其中,对于样本数据:
输出:
| 用户名|企业简介|是否可用|
| --|--|--|
| 爱丽丝|绿柱石;爱丽丝;卡罗尔|Y|
| 绿柱石|爱丽丝;卡罗尔;黛布拉|N|
| 卡罗尔|绿柱石;爱丽丝;卡罗尔|Y|
| 爱丽丝|绿柱石;非爱丽丝;卡罗尔|N|
如果你只是使用
INSTR
或LIKE
来简单地匹配值 * 而不使用 * 周围的分隔符,那么当你匹配一个部分项时,你可能会得到假阳性,当你只匹配Alice
时,你会匹配NotAlice
。包含分隔符将强制匹配为完整的项。fiddle