选择列,如果空白则从另一列中选择

时间:2009-11-17 09:56:18

标签: sql sql-server-2000

如何检测字段是否为空(不为空),然后选择另一个字段?

我真正需要的是IsBlank函数,其功能与IsNull相同,但带有空格。

REPLACE不适用于空白,COALESCE仅适用于NULLS。

4 个答案:

答案 0 :(得分:86)

如何组合COALESCE和NULLIF。

SELECT COALESCE(NULLIF(SomeColumn,''), ReplacementColumn)
FROM SomeTable

答案 1 :(得分:15)

您可以为此

使用CASE语句
select 
Case WHEN Column1 = '' OR Column1 IS NULL OR LEN (TRIM (Column1))  = 0 
     THEN Column2 
     ELSE Column1 END as ColumnName
from TableName

答案 2 :(得分:4)

编辑:你不能在mssql中使用IF()

在SQL的SELECT部分​​中使用IF语句:

SELECT IF(field1 != '', field1, field2) AS myfield FROM ...

答案 3 :(得分:2)

你总是可以写一个isBlank()函数,比如

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION isBlank
(
    @CheckExpression varchar, @ReplacementExpression varchar
)
RETURNS varchar
AS
BEGIN
    IF @CheckExpression IS NOT NULL
    BEGIN
        IF @CheckExpression='' or LEN(@CheckExpression) = 0
        RETURN @ReplacementExpression
    ELSE
        RETURN @CheckExpression
    END

    RETURN @ReplacementExpression
END
GO