in

Oracle – Error de SQL «ORA-01722: número inválido»

apple touch icon@2

Oracle hace String2number automático conversión, para Columna de cadena ¡valores! Sin embargo, para las comparaciones textuales en SQL, la entrada debe delimitarse explícitamente como una cadena: la conversión opuesta number2String no se realiza automáticamente, no en el nivel de consulta SQL.

Tuve esta consulta:

select max(acc_num) from ACCOUNTS where acc_num between 1001000 and 1001999;

Ese presentaba un problema: Error: ORA-01722: invalid number

Acabo de rodear el «numérico» valores, para hacerlos ‘Instrumentos de cuerda’, solo haciéndolos delimitado explícitamente:

select max(acc_num) from ACCOUNTS where acc_num between '1001000' and '1001999';

… y voilà: Devuelve el resultado esperado.

editar:
Y de hecho: el col acc_num en mi tabla se define como String. Aunque no es numrico, el invalid number Fue reportado. Y el delimitación explícita de los números de cadena resolvió el problema.

Por otro lado, Oracle pueden trate las cadenas como números. Entonces, las operaciones / funciones numéricas se pueden aplicar en las cadenas, y estas consultas funcionan:

Seleccione max(columna_cadena) de TABLA;

seleccione string_column de TABLE donde string_column Entre ‘2’ y ‘z’;

seleccione string_column de TABLE donde string_column > ‘1’;

seleccione string_column de TABLE donde string_column <= ‘B’;

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

directed acyclic graph 1

Diseño del compilador: generación de código

zgTT42VihuFWauxghFEnLf 1200 80

Los mejores videojuegos ambientados en las escuelas, desde Bullworth Academy hasta Centrescore High