ms access: el comando SQL "ENTRE" genera una discrepancia en el tipo de datos

CorePress2024-01-24  10

Ya tengo el código

INSERT INTO EMP_1 ( EMP_NUM, EMP_LNAME, EMP_FNAME, EMP_INITIAL, EMP_HIREDATE, JOB_CODE )
SELECT EMP_NUM, EMP_LNAME, EMP_FNAME, EMP_INITIAL, EMP_HIREDATE, JOB_CODE
FROM EMPLOYEE
WHERE EMP_NUM BETWEEN 103 AND 109;

y aparece el error "El tipo de datos no coincide en la expresión de criterios".

No recibo el error cuando no tengo esa línea DÓNDE... ENTRE; agrega las 18 líneas tal como se esperaba. Pero solo quiero agregar filas donde EMP_NUM está entre 103 y 109. El miembro EMP_NUM en la tabla EMP_1 y la tabla EMPLOYEE son del mismo tipo: Char(3).

(Además, esperaría que EMP_NUM fuera un número, no una cadena, pero esto es una tarea y qué sé yo)



------------------------------------

No estoy familiarizado con MS-Access, pero parece que se queja de que EMP_NUM es de tipoe CHAR(3) y usted solicita que se compare con dos valores INT.

Intente cambiar los valores enteros por caracteres: WHERE EMP_NUM BETWEEN "103" Y "109";

1

Tienes toda la razón. Soy nuevo en SQL pero ahora entiendo que la conversión sigue siendo igual de importante. Estoy intentando comparar una cadena con números, por lo que uno de ellos tiene que cambiar su tipo. Las comillas convierten los números en cadenas, lo cual es una mejor solución que reformular EMP_NUM.

& ndash; Justin Iaconis

27/03/2021 a las 22:46



------------------------------------

Utilice Val() para convertir esas cadenas EMP_NUM en números para compararlos con su rango de valores numéricos ENTRE:

WHERE Val(EMP_NUM) BETWEEN 103 AND 109

1

Esto funciona, pero también funciona poner 103 y 109 entre comillas para convertirlos en cadenas en lugar de valores. Dado que son números y quiero compararlos por valor, convertirlos en cadenas puede resultar complicado en ciertas situaciones.uaciones, pero en este caso, prefiero poner los números entre comillas. Gracias, ¡tu respuesta funciona!

- Justin Iaconis

27/03/2021 a las 22:47

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare