none
problemas con is not null RRS feed

  • Pregunta

  • tengo el siguiente select

    SELECT TOP 1 LEFT(SERIE,3)SERIE FROM APRETENCION WHERE SERIE IS NOT NULL

    mi pregunta es porque todavía me trae datos nulos si estoy usando el is not null debería agregarle algo mas ???

    martes, 21 de octubre de 2014 23:11

Respuestas

  • Ah, pues si usted compara lo que tiene en su SSMS con la imagen que yo le mostré, deberá poder concluir que esos valores "vacíos" no son valores nulos.  Su consulta entonces debe ser:

    SELECT TOP 1 LEFT(SERIE,3)SERIE FROM APRETENCION WHERE SERIE IS NOT NULL AND LEN(LTRIM(RTRIM(SERIE))) > 0

    De esta manera excluye los valores nulos y los valores no-nulos que sean cadenas de texto vacías o únicamente espacios.


    Jose R. MCP
    Code Samples

    • Marcado como respuesta Ricardo España lunes, 27 de octubre de 2014 17:47
    miércoles, 22 de octubre de 2014 16:34
  • la verdad me di cuenta de algo los datos no son nulos si no que son vacios entonces use la siguiente sentencia:

    SELECT TOP 1 SUBSTRING(SERIE, 4, 6)AS SERIE FROM APRETENCION  WHERE SERIE  <> ''

    la comillas son simples no dobles como me indicaron en una respuesta


    miércoles, 22 de octubre de 2014 16:34

Todas las respuestas

  • Puedes probar con esto:

    SELECT TOP 1 LEFT(SERIE,3)SERIE FROM APRETENCION WHERE SERIE <>""


    martes, 21 de octubre de 2014 23:24
  • Pruebas con esto

    SELECT TOP 1 LEFT(SERIE,3)SERIE FROM APRETENCION WHERE NOT SERIE = NULL

    miércoles, 22 de octubre de 2014 2:34
  • tengo el siguiente select

    SELECT TOP 1 LEFT(SERIE,3)SERIE FROM APRETENCION WHERE SERIE IS NOT NULL

    mi pregunta es porque todavía me trae datos nulos si estoy usando el is not null debería agregarle algo mas ???

    Tendría que ver para creer.  Nótese que el SQL que muestra usted tal vez está incorrecto.  ¿Quiere usted renombrar el resultado de la función LEFT() a "Serie"?  Me parece confuso sin el "As".  En fin, si funciona....

    Pero volviendo al tema:  Me rehuso a creer que que la consulta devuelve registros con valores nulos.  Recuerde que una cadena vacía no es lo mismo que un NULL.  La función LEFT() parece eliminar espacios al inicio (eso lo comprobé en SQL Server 2012 usando Select Left(' ', 3), LEN(Left(' ', 3)) así que eso podría estarle confundiendo).  Vea la siguiente figura:

    La primera columna es un no-nulo porque es una cadena de texto vacía mientras que la segunda columna sí muestra un nulo.  EN SSMS las columnas con verdaderos nulos se muestran con un fondo amarillo claro.


    Jose R. MCP
    Code Samples

    miércoles, 22 de octubre de 2014 12:53
  • Ninguna de las opciones funciono :( no se que pasa con la base de datos con respecto a lo que dice Jose ahora use el Substring pero no tube resultados positivos

    SELECT TOP 1 SUBSTRING(SERIE, 1, 3)AS SERIE FROM APRETENCION  WHERE SERIE  IS NOT NULL 

    Saludos Gracias por la ayuda.

    miércoles, 22 de octubre de 2014 14:07
  • Le solicito verifique muy bien si en verdad no son nulos en SERIE.  Simplemente no concibo que lo sean.  ¿Ya ejecutó la consulta en SSMS incluyendo el campo SERIE en el SELECT para asegurarse de que es verdaderamente NULL y que sale en una celda de color amarillo claro?

    Jose R. MCP
    Code Samples

    miércoles, 22 de octubre de 2014 14:12
  • Jose mira ahi hise un select a la tabla con el campo serie mira que no aparecen datos es por eso que los quiero omitir en mi consulta que solo quiero al cual le quiero recortar los datos si te fijas la serie tiene datos como 002001 yo deseo recortar desde el cuarto dato es decir que mi nueva serie sea 001 ya no 002001 ahi me podrias ayudar 
    miércoles, 22 de octubre de 2014 16:28
  • Ah, pues si usted compara lo que tiene en su SSMS con la imagen que yo le mostré, deberá poder concluir que esos valores "vacíos" no son valores nulos.  Su consulta entonces debe ser:

    SELECT TOP 1 LEFT(SERIE,3)SERIE FROM APRETENCION WHERE SERIE IS NOT NULL AND LEN(LTRIM(RTRIM(SERIE))) > 0

    De esta manera excluye los valores nulos y los valores no-nulos que sean cadenas de texto vacías o únicamente espacios.


    Jose R. MCP
    Code Samples

    • Marcado como respuesta Ricardo España lunes, 27 de octubre de 2014 17:47
    miércoles, 22 de octubre de 2014 16:34
  • la verdad me di cuenta de algo los datos no son nulos si no que son vacios entonces use la siguiente sentencia:

    SELECT TOP 1 SUBSTRING(SERIE, 4, 6)AS SERIE FROM APRETENCION  WHERE SERIE  <> ''

    la comillas son simples no dobles como me indicaron en una respuesta


    miércoles, 22 de octubre de 2014 16:34