PDA

Ver la Versión Completa : Extraer texto a la izquierda de un indice


Johnny Q
06-10-2005, 18:30:31
Un saludo a todos,

Trabajo con SQL Server, quisiera saber si alguien conoce alguna forma de extraer el texto que este a la izquierda de un indice que se da contando desde el final de la cadena hacia la izquierda.

Para hacerlo mas claro pondre el siguiente ejemplo,
En los cadenas "programa" y "delphi" quiero extraer la cadena que este a la izquierda del indice 3 (contando de derecha a izquierda), el resultado seria:

"progr"
"del"

Muchas gracias por sus respuestas

marcoszorrilla
06-10-2005, 18:34:31
Mírate la función Left.

Un Saludo.

Johnny Q
06-10-2005, 18:50:29
la función LEFT trabaja con un indice de izquierda a derecha y el indice que yo necesito es de derecha a izquierda

con la cadena "programa"

LEFT("programa", 3) arroja "pro"

y lo que yo necesito es que al darle un indice 3 me arroje "progr" que es la cadena que esta a la izquierda del indice 3 (contando de derecha a izquierda).

No se si me he explicado bien :(

marcoszorrilla
06-10-2005, 19:01:37
Right

Un Saludo.

Johnny Q
06-10-2005, 19:18:24
Creo que no me explique bien, y la verdad es que lo que necesito es un poco complejo:(

si utilizo RIGHT me arrojaria "ama" y ese resultado tampoco es el que necesito.

Agradezco mucho tu intento por ayudarme amigo Marcos.

marcoszorrilla
06-10-2005, 19:37:10
Un Saludo.

Mid(Palabra,1,Length(Palabra) -3)

Un Saludo.

vtdeleon
06-10-2005, 19:45:21
Saludos

Otra opción sería (probado en Firebird)
SUBSTR(palabra,1,10)
Casi lo mismo que ha expuesto marcoszorrilla

Chente(rMan)
06-10-2005, 19:45:21
Podrias explicarte un poco mejor???



Saludos

Vicente López.

Casimiro Notevi
06-10-2005, 19:47:58
cResultado := copy(cCadena, 1, length(cCadena)-3))

¿Quiéres decir esto?




Perdón, no vale... es que no me había fijado que está en el foro sql :o

Chente(rMan)
06-10-2005, 19:49:25
ya te entendi, esta fácil


declare @palabra varchar(50)
set @palabra = 'Programa'
select @palabra, left(@palabra,(len(@palabra)-3))



Edito: Casimiro, vas a decir que te copie pero te me adelantate simplemente;)


Saludos.

Vicente López.

Johnny Q
06-10-2005, 19:49:32
Eso funciona muy bien desde el código de delphi, pero lo que yo busco es una sentencia SQL, pues estoy intentando cargar datos desde Excel a SQL Server.

Lo mejor es que ya logre resolverlo.:D

Muchas gracias por tu ayuda Marcos.

Casimiro Notevi
06-10-2005, 19:50:53
Eso funciona muy bien desde el código de delphi, pero lo que yo busco es una sentencia SQL, pues estoy intentando cargar datos desde Excel a SQL Server.

Lo mejor es que ya logre resolverlo.:D

Muchas gracias por tu ayuda Marcos.
y por qué no lo cuentas?, es secreto también?;)

vtdeleon
06-10-2005, 19:51:00
Saludos

Creo que con un Ejemplo bastaría:)
entonces tenemos esto:
SUBSTR('ClubDelphi',3,6)
el resultado sería: 'ubDelp'

Chente(rMan)
06-10-2005, 19:53:50
vtdeleon, lo que Johnny Q quiere, es que tu cuentes de derecha a izq 3 posiciones y se lo quites al texto, mas arriba puse la solución.



Saludos.

Vicente López.

Johnny Q
06-10-2005, 19:55:22
Para Vicente:

probe el codigo que me enviaste y es exactamente lo que estaba buscando, muchas gracias.

Casimiro Notevi
06-10-2005, 19:56:01
ya te entendi, esta fácil


declare @palabra varchar(50)
set @palabra = 'Programa'
select @palabra, left(@palabra,(len(@palabra)-3))



Edito: Casimiro, vas a decir que te copie pero te me adelantate simplemente;)


Saludos.

Vicente López.
je, je, je ... ;)

vtdeleon
06-10-2005, 20:01:51
Saludosvtdeleon, lo que Johnny Q quiere, es que tu cuentes de derecha a izq 3 posiciones y se lo quites al texto, mas arriba puse la solución.Oops, Siempre lento como la tortuga, me tarde un poco en el post anterior y me habia quedado en el post 8. No habia visto los demas
:rolleyes:

Johnny Q
06-10-2005, 21:06:05
Casimiro me pregunto que había hecho yo, pues lo que se me ocurrio fue lo siguiente:

SELECT REVERSE(SUBSTRING(REVERSE(texto),4,8)) FROM tabla

aunque me parece más óptima la solución que dio Vicente.