Ejecutando una instrucción select en una tabla con una columna de tipo smallint y recibir por encima de error:

SELECT * FROM [Database].[dbo].[TableName]
where ColumnName = 'ABC123'

Sé smallint debe ser un número entero, pero en la tabla, los datos que contiene datos mixtos (es decir, ABC123); ¿cómo puedo ejecutar la instrucción select sin modificar el tipo de datos? Cuando intento modificar el tipo de datos, SQL me dice que tengo que quitar y volver a la tabla de la que no puedo hacer…

Gracias!

  • ¿qué tipo de datos se ColumnName en tu ejemplo? – si el nombre de la Columna es un pequeño int entonces no hay manera posible de que contiene el valor varchar ‘ABC123’
  • El tipo de datos para ColumnName es de tipo smallint que es parte del problema lo sé -, pero te aseguro que la columna contiene valores varchar. Yo era capaz de averiguar cómo obtener los resultados mediante el uso de «reparto» en la cláusula where. Véase mi respuesta a continuación. Esto funcionó, gracias!
  • El SMALLINT tipo de datos acepta valores numéricos, con una implícita escala de cero. Almacena un valor entero comprendido entre el rango de 2^ -15 y 2^15 -1. Intentar asignar valores fuera de este rango, se produce un error. – ColumnName no puede ser un smallint si usted está almacenando los valores varchar
  • Entiendo lo que smallint tipo de datos es, sin embargo, en esta columna en nuestra base de datos contiene valores smallint y el carácter mixto de los valores… es por eso que me estaba haciendo un poco de investigación sobre cómo obtener los resultados. Gracias!
  • Pero el tipo de dato de la columna físicamente no pueden ser pequeñas int –
InformationsquelleAutor DangeRuss | 2016-05-24

2 Comentarios

  1. 3

    El uso de Reparto que yo era capaz de conseguir los resultados:

    select * from TableName
    where cast(ColumnName as varchar) = 'ABC123'

    Esta trabajado y devuelve los resultados. Gracias!

  2. 1

    Tendría que seleccionar sólo los números. Si usted está tratando de buscar a través de múltiples columnas, tendría que hacer algo como esto:

    SELECT * FROM [Database].[dbo].[TableName]
    where SmallIntColumn = 123 AND CharColumn = 'ABC'

    Si la columna es algún tipo de números, que no pudo contener no las entradas numéricas.

    • gracias pero en realidad me lo imaginé! Voy a editar mi pregunta para incluir la respuesta. Gracias, aunque.

Dejar respuesta

Please enter your comment!
Please enter your name here