Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   mostrar sólo 5 caracteres de un varchar(75) (https://www.clubdelphi.com/foros/showthread.php?t=35495)

Giniromero 12-09-2006 18:10:58

mostrar sólo 5 caracteres de un varchar(75)
 
Hola,

estoy trabajando con IB7.5
El caso es que necesito hacer una consulta SQL a un campo de mi tabla, que es un varchar, y que me guarde en otro campo "temporal" o ficticio, el valor obtenido de tomar de dicho campo, los 5 primeros caracteres.

Así, si por ejemplo, tengo en dicho campo "Pepe perez y algo más" lo que se tendría que guardar es "Pepe ", aunque si pudiera hacerlo obviando los espacios en blanco mejor, esto es: "pepep"


Muchas Gracias por la ayuda de antemano,

Virginia Romero

Bicho 12-09-2006 18:14:56

Ahora mismo no se si funciona en IB pero prueba la funcion SBSTR;

Código SQL [-]
select substr(nombre, 5) from ...

Espero te sirva,

Saludos

maeyanes 12-09-2006 19:25:49

En interbase tiene que agregar la UDF SubStr para que la pueda usar:

Código SQL [-]
DECLARE EXTERNAL FUNCTION SUBSTR
  CSTRING(80) CHARACTER SET ISO8859_1,
  SMALLINT,
  SMALLINT
RETURNS CSTRING(80) CHARACTER SET ISO8859_1 FREE_IT
ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';

Ya luego para usarla:

Código SQL [-]
select SubStr(Field, 1, 5) from ...


Saludos...

Giniromero 13-09-2006 11:28:25

Hola,

lo primero, gracias por contestar mi duda.

He escrito:

Código SQL [-]
select SubStr(clientes.apelcl, 1, 5) from clientes

al situar el cursor sobre la palabra SubStr me muestra un desplegable que pone:

Cita:

SubStr(Param1: CSTRING(256);Param2: SMALLINT; Param3: SMALLINT)
Al ejecutar el código SQL que comento, me devuelve el siguiente mensaje de error:

Cita:

Invalid token.
invalid request BLR at offset 63.
function SUBSTR is not defined.
module name or entrypoint could not be found.
He intentado hacer lo que me indicó maeyanes de poner:

Código SQL [-]
DECLARE EXTERNAL FUNCTION SUBSTR
  CSTRING(80) CHARACTER SET ISO8859_1,
  SMALLINT,
  SMALLINT
RETURNS CSTRING(80) CHARACTER SET ISO8859_1 FREE_IT
ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';

pero al ejecutarlo me contesta:

Cita:

This operation is not defined for system tables.
unsuccessful metadata update.
DEFINE FUNCTION failed.
attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_9".
Por si sirbe de algo, para gestionar IB estoy usando IB Expert.

Muchas gracias a todos por vuestro tiempo,

Atentamente
Virginia Romero.

pjjorda 19-09-2006 12:37:41

substring
 
Saludos,

esto me funciona:

SELECT SUBSTRING(NOM FROM 1 FOR 5) FROM CLIENTES WHERE NUM<5

en firebird y con ibx7.5

si quieres eliminar los espacios, existen unas Udf de firebird, rtrim, ltrim, trim,
espero que puedas localizarlas.

espero haber sido de ayuda.
P.


La franja horaria es GMT +2. Ahora son las 16:48:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi