Hola,
Todos los dias se aprende algo nuevo, hoy me entere de como Oracle compara los tipos de datos CHAR, asi que pense en hacer la traduccion y compartirla.
Oracle compara valores CHAR usando comparacion semantica blank-padded
Código:
Blank-Padded Non-Padded
------------ ----------
'ab' > 'aa' 'ab' > 'aa'
'ab' > 'a ' 'ab' > 'a '
'ab' > 'a' 'ab' > 'a'
'ab' = 'ab' 'ab' = 'ab'
'a ' = 'a' 'a ' > 'a'
COMPARACION SEMANTICA BLANK-PADDED
Si los dos valores tienen diferentes longitudes, Oracle primero añade espacios en blanco al final del mas corto para que sus longitudes sean iguales. Oracle compara los valores carácter por carácter hasta el primer carácter que sea distinto. El valor con el mayor carácter en la primera posición distinta se considera mayor. Si los dos valores no tienen diferentes caracteres, se los considera iguales. Esta regla significa que dos valores son iguales si sólo difieren en el número de espacios en blanco.
Oracle utiliza comparación semántica blank-padded sólo si los dos valores en la comparación son CHAR DataType o son literales de texto.
Prestando mayor atencion a la ultima sentencia pregunto, es posible que el parametro :campo1 no sea del tipo CHAR?
Saludos