我有一个电子邮件地址的数据库表。 我想根据一组字符串查询它。
我不仅希望查询结果返回字符串集中包含的那些电子邮件地址 - 这很简单。
相反,我希望找回查询中使用的所有字符串,以及一个布尔字段,告诉我它是否在表中。例如。: joe@joe.com是的 sam@sam.com是的 jim@jim.com错误
我有解决方案(使用'Not In'查询加入'In'查询) - 但我希望有更好的东西。
(是的,我知道我可以通过简单的查询然后从查询字符串集中删除找到的项目而在没有数据库的情况下解决它)
答案 0 :(得分:1)
将您要查询的地址放入(临时)表格,然后将电子邮件地址表LEFT JOIN加入其中。
SELECT
r.email_address,
CASE WHEN e.email_address IS NULL THEN 'FALSE' ELSE 'TRUE' END AS is_present
FROM requested_emails r
LEFT JOIN email_addresses e ON r.email_address = e.email_address
答案 1 :(得分:0)
declare @CrappyStr varchar(10)
set @CrappyStr = 'dummy'
select @CrappyStr AS SearchString
, email_address
, CASE WHEN charindex(@CrappyStr, email_address) > 0 THEN 'True'
ELSE 'False' END AS [BOO-lean]
from SnarkyTable
答案 2 :(得分:0)
请注意,SQL没有布尔类型。我在这里使用字符串。
SELECT email_address, NVL( sq.present, 'FALSE' ) AS present
FROM mytable t
LEFT JOIN ( SELECT email_address, 'TRUE' AS present
FROM mytable
WHERE email_address in ( ... your list here ... )
) sq ON sq.email_address = t.email_address