valores validar sqlserver not ejemplos ejemplo check campo buscar sql sql-server isnull

validar - isnull sqlserver



¿Hay una función opuesta a ISNULL en el servidor SQL? Hacer ¿No es nulo? (5)

Existe la expresión COALESCE (aunque no es función https://msdn.microsoft.com/en-us/library/ms190349.aspx ) prueba los argumentos en orden y sigue haciéndolo hasta que encuentre el valor no NULL y lo devuelva.

ejemplo de uso:
SELECT COALESCE(NULL, NULL, 5)--returns 5

En tu caso :
COALESCE(a.PolicySignedDateTime,aq.Amount) AS ''Signed Premium'',

Tengo este código en mi declaración selecta

ISNULL(a.PolicySignedDateTime,aq.Amount) AS ''Signed Premium'',

Pero quiero ver si "a.PolicySignedDateTime" no es nulo. ¿Existe una función fácil para hacer esto que no implique el uso de una declaración "if"?

Animo amigos


No hay una función opuesta, pero puedes hacerlo sin CASE .

Use el hecho de que una cadena + ''algo'' será NULL si la cadena es NULL, y si eso es nulo, use ISNULL para devolver ''somethingelse'', obtenga el final del valor devuelto con RIGHT () y verifique que contra ''algo'' use NULLIF, y luego use COALESCE para hacer lo que le gustaría hacer si es NULL (lo que significa que el valor original no es nulo).

Ejemplo:

declare @text varchar(20) = ''some text or value'' select COALESCE(NULLIF(RIGHT(ISNULL(@text + ''NOT'', ''IS '') + ''NULL'', 7), ''NOTNULL''), ''NOT NULL'')

Pruebe este código y también inténtelo sin valor para @text.


Prueba esto:

SELECT CASE WHEN a.PolicySignedDateTime IS NOT NULL THEN a.PolicySignedDateTime ELSE aq.Amount FROM your joined table

Pero ... ISNULL (a.PolicySignedDateTime, aq.Amount) verifica si tu campo es nulo, por lo que no es nulo, obtienes su valor.

Así que realmente no entiendo porque quieres usar otra manera.


Tienes que usar CASE

SELECT CASE WHEN Field IS NOT NULL THEN ''something'' ELSE ''something else'' END


Dado que estamos en el entorno DBMS, es posible utilizar un enfoque basado en conjuntos. Entonces, asumiendo que la tabla tiene un campo identificador (id) - clave principal o única y no nula, el trabajo se puede hacer de esta manera:

SELECT numeric_field * count(flag_field) AS not_null_flag_numeric_value_or_zero FROM my_table GROUP BY id, numeric_field

Si el campo de valor es del tipo de datos de caracteres, debe utilizarse alguna función char. Por lo tanto, la implementación práctica del enfoque podría ser la siguiente:

SELECT * INTO #temporary_table FROM (VALUES (1, 1, 111, ''string_1''), (2, NULL, 222, ''string_2'') ) data_table(id, flag_field, numeric_field, character_field) ALTER TABLE #temporary_table ADD CONSTRAINT tab_pk PRIMARY KEY (id) SELECT count(flag_field) AS is_not_null, numeric_field * count(flag_field) AS numeric_value_or_zero, numeric_field * nullif(count(flag_field), 0) AS numeric_value_or_null, left(character_field, len(character_field) * count(flag_field)) AS character_value_or_empty, stuff(character_field, nullif(count(flag_field), 0), 0, '''') AS character_value_or_null FROM #temporary_table GROUP BY id, numeric_field, character_field --DROP TABLE #temporary_table

Otra opción para obtener el signo NOT NULL en forma de 1 es usar la conversión del valor de flag_field a bit:

... cast(flag_field as bit) ...

Esto funciona cuando la conversión a bit está disponible para su tipo de datos flag_field y es útil cuando puede considerar valores 0 y valores nulos como el mismo SIN VALOR. Representado por NULL o 0, como usted elija:

SELECT nullif(cast(flag_field as bit), 0) AS is_not_null_or_null, isnull(cast(flag_field as bit), 0) AS is_not_null_or_zero, numeric_field * nullif(cast(flag_field as bit), 0) AS value_or_null, numeric_field * isnull(cast(flag_field as bit), 0) AS value_or_zero FROM #temporary_table