sql函数如何根据表中值的条件返回一个字符串

时间:2012-04-04 23:47:34

标签: sql

我有这个SQL表Invoice。我想要实现的是编写一个函数,您可以发送主键值来获取特定发票。然后我想检查发票'收到'的字段这是一个位字段。如果是1,我想从“已接收”功能返回。如果是0,我想返回“未收到”。

我自己去了:

ALTER FUNCTION dbo.InvoiceStatus(@InvoiceId INT)
RETURNS VARCHAR
BEGIN
declare @Status varchar(100)

    SELECT * 
      FROM [Invoices_Prod].[dbo].[Invoice]
      Where InvoiceId = @InvoiceId

      ...

      How to check the received value?

      ...

    return @Status

END
GO

所以我传递InvoiceId并使用select语句获取特定的Invoice。我缺少的是如何检查Received字段并设置要返回的状态值。

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:0)

查看CASE

Select [foo], [bar],
  case when [received] = 1 
    then 'Received'
    else 'Not received'
  end as Status
From [Invoice]
Where [InvoiceId] = @InvoiceId
....

但是,我建议保持UDF的这种表示层逻辑 out ,甚至完全远离整个数据层/ RDBMS,从而处理它所在的表示应该完成:在表示层/逻辑中。