2016-12-15 22 views

回答

0
Select * 
From [dbo].[SomeTable1] A 
Join [dbo].[SomeTable2] B 
    on charindex(','+EmailAddress ,','+Emails)>0 
+0

@JohnCappelletti我认为EmailAddress的将是更大的字符串的所有电子邮件和逗号分隔和它会匹配两者之间出现的电子邮件地址,也就是两边都是','吗? –

+0

@JibinBalachandran想想看,双方的逗号没有必要,但它没有任何伤害 –

+0

@JohnCappelletti'EmailAddress包含 (选择[dbo]。[SomeTable2]的电子邮件)',你认为哪一个是逗号分开的电子邮件地址?我认为'EmailAddress'将会是更大的字符串,我们应该在其中搜索电子邮件。我不确定。如我错了请纠正我。 –

0
select EmailAddress 
from [dbo].[SomeTable1] tab1 
where exists 
    (select 1 
    from [dbo].[SomeTable2] tab2 
    where '%,'+tab1.EmailAddress+',%' LIKE ','+tab2.Emails+','); 
1

试试这个:

SELECT DISTINCT EmailAddress 
FROM [dbo].[SomeTable1] A 
INNER JOIN [dbo].[SomeTable2] B ON CHARINDEX(',' + Emails, + ',',',' + EmailAddress + ',')>0 

使用CHARINDEX,以检查是否存在EmailAddress与否和JOIN只有当它存在的表的Emails

+0

@Srinath它将满足两种情况..我的意思是两个emailids的where子句都是真实的。 –

0

首先创建如下用户定义函数来拆分逗号分隔值

create FUNCTION [dbo].[Split] (
      @InputString     VARCHAR(8000), 
      @Delimiter     VARCHAR(50) 
    ) 

    RETURNS @Items TABLE (
      Item       VARCHAR(8000) 
    ) 

    AS 
    BEGIN 
      IF @Delimiter = ' ' 
      BEGIN 
       SET @Delimiter = ',' 
       SET @InputString = REPLACE(@InputString, ' ', @Delimiter) 
      END 

      IF (@Delimiter IS NULL OR @Delimiter = '') 
       SET @Delimiter = ',' 

      DECLARE @Item   VARCHAR(8000) 
      DECLARE @ItemList  VARCHAR(8000) 
      DECLARE @DelimIndex  INT 

      SET @ItemList = @InputString 
      SET @DelimIndex = CHARINDEX(@Delimiter, @ItemList, 0) 
      WHILE (@DelimIndex != 0) 
      BEGIN 
       SET @Item = SUBSTRING(@ItemList, 0, @DelimIndex) 
       INSERT INTO @Items VALUES (@Item) 

       -- Set @ItemList = @ItemList minus one less item 
       SET @ItemList = SUBSTRING(@ItemList, @DelimIndex+1, LEN(@ItemList)[email protected]) 
       SET @DelimIndex = CHARINDEX(@Delimiter, @ItemList, 0) 
      END -- End WHILE 

      IF @Item IS NOT NULL -- At least one delimiter was encountered in @InputString 
      BEGIN 
       SET @Item = @ItemList 
       INSERT INTO @Items VALUES (@Item) 
      END 

      -- No delimiters were encountered in @InputString, so just return @InputString 
      ELSE INSERT INTO @Items VALUES (@InputString) 

      RETURN 

    END -- End Function 

最终查询

select EmailAddress from [dbo].[SomeTable1] where EmailAddress in 
    (select item from [dbo].[SomeTable2] cross apply dbo.Split(Emails,','))