web-dev-qa-db-fra.com

Sélectionnez la colonne, si vide, sélectionnez-en une autre

Comment peut-on détecter si un champ est vide (et non nul) puis sélectionner un autre champ s'il l'est?

Ce dont j'ai vraiment besoin, c'est d'une fonction IsBlank qui fonctionne de la même manière que IsNull mais avec des blancs.

REPLACE ne fonctionne pas avec les blancs, COALESCE ne fonctionne qu'avec NULLS.

33
graham.reeds

Que diriez-vous de combiner COALESCE et NULLIF.

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

Vous pouvez utiliser une instruction CASE pour cela

select 
Case WHEN Column1 = '' OR Column1 IS NULL OR LEN (TRIM (Column1))  = 0 
     THEN Column2 
     ELSE Column1 END as ColumnName
from TableName
16
Raj More

EDIT: Vous ne pouvez pas utiliser IF() dans mssql.

Utilisez une instruction IF dans la partie SELECT de votre SQL:

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

Vous pouvez toujours écrire une fonction isBlank (), quelque chose comme

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
2
Chris Welsh