【问题标题】:SQL Trying to concatenate 'ATTN" on a field when field is not NULL当字段不为 NULL 时,SQL 尝试在字段上连接“ATTN”
【发布时间】:2013-05-26 12:36:11
【问题描述】:

我已经被这个问题困扰了一段时间,希望能得到一点帮助。

我正在使用 SQL 2008 并创建一个视图以用于报告,我正在尝试这样做

SELECT
  SHIPNUMBER
 ,BILLADDRESS
 ,'ATTNCONTACT' = 'ATTN: ' + BILCONTACT
FROM PackingList

但是,如果 BILCONTACT ISNULL,我不希望出现“ATTN:”,我希望它保持为空。

有什么建议吗?

【问题讨论】:

  • 你没有做你想做的事情是怎样的?
  • 添加WHERE bilContact IS NOT NULL?
  • @hvd,如果 BILCONTACT 为空,那么我仍然会得到 'ATTN:' 我需要它保持为空或''
  • @David,即使 BILCONTACT 为空,我仍然需要显示其余字段。抱歉,如果...增加了混乱,我将编辑我的 SELECT 以显示更多信息。
  • @jnoel10 为了完整起见,另一种解决方案是'ATTN: ' + NULLIF(BILCONTACT, '')

标签: tsql string-concatenation


【解决方案1】:

使用 CASE 但也检查空字符串。结果是一样的,但你可以写任何一种方式。

SELECT  'ATTNCONTACT' = CASE WHEN BILCONTACT IS NOT NULL AND BILCONTACT != '' THEN 'ATTN: ' + BILCONTACT END 
FROM PackingList

SELECT  CASE WHEN BILCONTACT IS NOT NULL AND BILCONTACT != '' THEN 'ATTN: ' + BILCONTACT END AS ATTNCONTACT
FROM PackingList

【讨论】:

  • 您可以将 WHEN 简化为 WHEN COALESCE(BILCONTACT,'') != ''
  • 甚至WHEN BILCONTACT <> '',因为UNKNOWNFALSE 的结果都会导致CASE 跳过该部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-12
  • 1970-01-01
  • 1970-01-01
  • 2016-03-27
相关资源
最近更新 更多