PDA

Ver la Versión Completa : Quitar Espacios en Blanco en los Valores de un Query


vientos
06-03-2013, 20:05:29
Hola Amigos,

Tengo un problema y acudo a ustedes para ver si pueden orientarme, estoy pasando registros de una base de datos de Firebird .GDB a una copia de esta misma hecha en PostgreSQL, para lo cual desarrolle una herramienta de traspaso de todos los registros, hasta aquí todo va muy bien, pero resulta que algunas cadenas se insertan en la base de datos de PostgreSQL con espacios en blanco al final, lo cual provoca que al consultar los datos no todos los registros buscados coincidan por esos espacios al final.

Cabe Mencionar que en la base de datos de Firebird no estan esos espacios en blanco al final y aquí las búsquedas en los registros funcionan perfectamente podrían ayudarme a como quitarle a los valores del query esos espacios en blanco al final?

Aquí pongo mí código:

Fmodulo05.qry_AbrirCalificacionesU.First;
while not Fmodulo05.qry_AbrirCalificacionesU.Eof do
begin

//avanzamos progress bar por tabla
FProgresTransf.LTransferencia.Caption:= 'Transfiriendo tabla Calificaciones';
FProgresTransf.Update;
with FProgresTransf.PBProgreso do
begin
Min := 1;
Max := Fmodulo05.qry_AbrirCalificacionesU.RecordCount;
for posicion := Min to Max do
begin
Position := posicion;

Fmodulo05.qry_InsertCalificacionesU.Close;
Fmodulo05.qry_InsertCalificacionesU.Prepare;
Fmodulo05.qry_InsertCalificacionesU.ParamByName('ciclo').AsInteger:=(Fmodulo05.qry_AbrirCalificacion esUCiclo.Value);
Fmodulo05.qry_InsertCalificacionesU.ParamByName('subciclo').AsInteger:=(Fmodulo05.qry_AbrirCalificac ionesUSubCiclo.Value);
Fmodulo05.qry_InsertCalificacionesU.ParamByName('departamento').AsString:=(Fmodulo05.qry_AbrirCalifi cacionesUDepartamento.Value);
Fmodulo05.qry_InsertCalificacionesU.ParamByName('matricula').AsString:=(Fmodulo05.qry_AbrirCalificac ionesUMatricula.Value);
Fmodulo05.qry_InsertCalificacionesU.ParamByName('asignatura').AsString:=(Fmodulo05.qry_AbrirCalifica cionesUAsignatura.Value);
Fmodulo05.qry_InsertCalificacionesU.ParamByName('aspecto').AsInteger:=(Fmodulo05.qry_AbrirCalificaci onesUAspecto.Value);
Fmodulo05.qry_InsertCalificacionesU.ParamByName('evaluacion').AsString:=(Fmodulo05.qry_AbrirCalifica cionesUEvaluacion.Value);
Fmodulo05.qry_InsertCalificacionesU.ParamByName('valor').AsFloat:=(Fmodulo05.qry_AbrirCalificaciones UValor.Value);
Fmodulo05.qry_InsertCalificacionesU.ExecSQL;

contador:=contador+1;
FProgresTransf.LContador.Caption:=IntToStr(contador);
FProgresTransf.Update;
Fmodulo05.qry_AbrirCalificacionesU.Next;

end;
end;
end;


De antemano agradezco sus atenciones

Saludos

Casimiro Notevi
06-03-2013, 20:11:27
Usa rpad, aunque el problema será que has declarado los campos en postgresql como char de longitud fija, en lugar de varchar.

RPAD()

Available in: DSQL, PSQL
Added in: 2.1
Changed in: 2.5 (backported to 2.1.4)
Description: Right-pads a string with spaces or with a user-supplied string until a given length is reached.
Result type: VARCHAR or BLOB
Syntax:
RPAD (str, endlen [, padstr])
This function fully supports text BLOBs of any length and character set.
If str is a BLOB, the result is a BLOB. Otherwise, the result is a VARCHAR(endlen).
If padstr is given and equals '' (empty string), no padding takes place.
If endlen is less than the current string length, the string is truncated to endlen, even if padstr is the empty string.