none
Consulta con SQL

    Question

  • Cordial saludo:

     

    Estoy haciendo una consulta de SQL en Visual Basic con la siguiente instrucción:

     

    "SELECT codigo, descripcion, existencia, unidad_venta, costo_compra FROM Productos " _
      & "WHERE departamento BETWEEN '1' and '3'"

     

    El problema que tengo es que me muestra los productos con código de departamento igual a:

    1,12,16,17,2,21,24,3. Los código en rojo no deberian de aparecer en la consulta.

     

    Departamento es un campo de tipo texto en una tabla de access.

     

    Agradezco de antemano aquien me pueda ayudar.

     

     

     

     

     

     

     

    Saturday, July 21, 2007 6:43 PM

Answers

  • Si sabes que los datos almacenados son siempre valores numéricos (y supongo que esta fuera de tus manos almacenarlo en un campo apropiado), y sabes que el rango es numérico también, puedes utilizar un CAST para convertirlo a integer y luego hacer una comparación

    select .......where CAST(Departamento as int)>=1 and CAST(Departamento as int)<=3
    Saturday, July 21, 2007 9:16 PM
  • El problema es que los campos de tipo texto se comparan de una forma diferente a los campos numéricos. Dado que tú deseas que se comparen como si fueran números, debes convertir el 1 y el 3 a un tipo numérico, como int por ejemplo, antes de compararlos:

    Code Snippet

    WHERE departamento BETWEEN CONVERT(int, '1') AND CONVERT(int, '3')

     

    Espero te sea de utilidad,

     

    Julio.

    Sunday, July 22, 2007 8:50 PM

All replies

  • Si sabes que los datos almacenados son siempre valores numéricos (y supongo que esta fuera de tus manos almacenarlo en un campo apropiado), y sabes que el rango es numérico también, puedes utilizar un CAST para convertirlo a integer y luego hacer una comparación

    select .......where CAST(Departamento as int)>=1 and CAST(Departamento as int)<=3
    Saturday, July 21, 2007 9:16 PM
  • El problema es que los campos de tipo texto se comparan de una forma diferente a los campos numéricos. Dado que tú deseas que se comparen como si fueran números, debes convertir el 1 y el 3 a un tipo numérico, como int por ejemplo, antes de compararlos:

    Code Snippet

    WHERE departamento BETWEEN CONVERT(int, '1') AND CONVERT(int, '3')

     

    Espero te sea de utilidad,

     

    Julio.

    Sunday, July 22, 2007 8:50 PM