0

我有如下数据:

tblBio

bio        bioid
some data  1
some data  2

tbl联系人

email        email_pub    bioid
me@me.com    1            1
you@me.com   0            2

我需要选择

bio + 'email: ' + email WHERE email_pub = 1

我目前有:

SELECT b.bio + 'Email: ' + COALESCE(c.email, '')
FROM tblbio b
INNER JOIN tblContact c ON b.bioid = c.bioid
WHERE c.email_pub = 1
AND b.bioid = 1

但是,我总是需要选择 bio,然后仅在 email_pub 设置为 1 时将文本“email:”以及电子邮件地址附加到末尾。如果 email_pub 为 0,则使用“WHERE email_pub = 1”即可然后什么都没有选择。

同样,即使没有已发布的电子邮件,文本“电子邮件:”也将始终显示。

谢谢,

托马斯

4

2 回答 2

6

这是一个需要CASE-CASE用于表达式的内联评估的场景。

SELECT b.bio + 'Email: ' + CASE WHEN email_pub=1 THEN COALESCE(c.email, '') ELSE '' END
FROM tblbio b
INNER JOIN tblContact c ON b.bioid = c.bioid
WHERE b.bioid = 1
于 2012-05-23T13:41:55.007 回答
5

使用CASE

SELECT b.bio + case when email_pub = 1 then 'Email: ' + COALESCE(c.email, '') else '' end
FROM tblbio b
INNER JOIN tblContact c ON b.bioid = c.bioid
WHERE b.bioid = 1
于 2012-05-23T13:41:19.203 回答