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)
-   -   Como concatenar numeros y caracteres con sql (https://www.clubdelphi.com/foros/showthread.php?t=86615)

uper 08-09-2014 20:35:32

Como concatenar numeros y caracteres con sql
 
b. tardes a todos, tengo una duda de como concatenar en una consulta sql numeros y caracteres, se que en fb es con || pero lo que no se es si es como sqlserver que los numero se convierten en caracter primero por decir, lo que mas nos convenga para relacionar entre tablas.

Por ejemplo, tengo dos tablas que deben relacionarse entre si:
una es tablauno.campoid definida como entero
tablados.campoidentificado definida como char(2)
realizando el inner join lo que hare es left join a on || + '0' + || a.id=b.identificador

Me arroja un error, cual seria lo correcto, o como convierto el numero como caracter.

Gracias

Casimiro Notevi 08-09-2014 20:41:38

Cita:

Empezado por uper (Mensaje 480921)
Me arroja un error

¿Y el error es...?

Debes usar cast(loquesea as tipoquequieras)

duilioisola 09-09-2014 11:45:36

Aquí creo que te sobra el primer par de ||
Código SQL [-]
left join a on || + '0' + || a.id=b.identificador
Debería ser así:
Código SQL [-]
left join a on '0' + || a.id = b.identificador

De todos modos, si a.id es mayor que 9, al concatenarle un 0 delante será demasiado grande como para caber en un char(2).
Luego estarás comparando '010' con '10'.

Supongo que una mejor opción (siempre que los valores de b.identificador sean SIEMPRE numéricos) es comparar números.
Código SQL [-]
left join a on a.id = cast(b.identificador as integer)

uper 18-09-2014 22:01:30

buenas tardes, si pongo demasiadas concatenaciones con el signos de mas(+) me da error, " left join a on || + '0' + || a.id=b.identificador " lo que hice es:

left join a on '0' || a.id=b.identificador es correcto o bien como comentan es usar el cast de esta forma: left join a on cast(a.id as integer)=b.identificador

Muchas gracias

Por cierto el error lo comparto y uso una aplicacion que se llama DBeaver (es free), lo malo es que no me permite hacer backup o restaurar la BD:

SQL Error [335544569] [42000]: GDS Exception. 335544569. Dynamic SQL Error
SQL error code = -104
Token unknown - line 11, column 40
||
GDS Exception. 335544569. Dynamic SQL Error
SQL error code = -104
Token unknown - line 11, column 40
||
Dynamic SQL Error
SQL error code = -104
Token unknown - line 11, column 40
||

Casimiro Notevi 18-09-2014 22:07:22

El signo + no debes ponerlo.
El doble signo || hace las veces del +
O sea, que en SQL, la concatenación es con || y no con +

duilioisola 18-09-2014 22:18:12

Cita:

SQL error code = -104
Token unknown - line 11, column 40
||
Esto te está diciendo que en la línea 11, en la columna 40 tienes un error.
El error es que no reconoce ||.

Como no has puesto el código que utilizaste, no podemos ayudarte mas.


La franja horaria es GMT +2. Ahora son las 05:47:32.

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