Sql 基于分隔值检索数据
我是sql新手,遇到以下问题,其中有以下两个表:Sql 基于分隔值检索数据,sql,sybase,Sql,Sybase,我是sql新手,遇到以下问题,其中有以下两个表: Table A |---------------------|-----------------------------------------------| | ID | Email | |---------------------|-----------------------------------------------| |
Table A
|---------------------|-----------------------------------------------|
| ID | Email |
|---------------------|-----------------------------------------------|
| 12 | abc@gmail.com;123@gmail.com;456@gmail.com |
|---------------------|-----------------------------------------------|
| 13 | abc@gmail.com;678@hotmail.com |
|---------------------|-----------------------------------------------|
Table B
|---------------------|-----------------------------------------------|
| Name | Email |
|---------------------|-----------------------------------------------|
| Mark | abc@gmail.com; |
|---------------------|-----------------------------------------------|
| John | 456@gmail.com |
|---------------------|-----------------------------------------------|
| Alex | 678@hotmail.com |
|---------------------|-----------------------------------------------|
| Suds | yyy@gmail.com |
|---------------------|-----------------------------------------------|
| Eric | zzz@gmail.com |
|---------------------|-----------------------------------------------|
现在,我需要将这两个表连接起来,但只显示在表A中有电子邮件的用户的姓名,其中电子邮件列是分隔的
|---------------------|
| Name |
|---------------------|
| Mark |
|---------------------|
| John |
|---------------------|
| Alex |
|---------------------|
这是一个可怕的数据模型,应该加以修复。不应在单个列中存储多个值 也就是说,您可以通过加入
来解决此问题:
select b.email
from a join
b
on ';' + a.email + ';' like '%;' + b.email + ';%';
请注意分隔符的使用。这与列表的第一个和最后一个元素相匹配。这是一个可怕的数据模型,应该加以修复。不应在单个列中存储多个值
也就是说,您可以通过加入来解决此问题:
select b.email
from a join
b
on ';' + a.email + ';' like '%;' + b.email + ';%';
请注意分隔符的使用。这与列表的第一个和最后一个元素匹配。上面的内容是否与列表中第一个和最后一个元素之间的任何内容都不匹配?@greasefirkins。应该是。您有问题吗?上面的内容是否与列表中第一个和最后一个元素之间的内容不匹配?@greasefirkins。应该是。你有问题吗?电子邮件中马克的分号是故意的吗?电子邮件中马克的分号是故意的吗?