SQL - Substraer un string a partir de una palabra

   
Vista:

Substraer un string a partir de una palabra

Publicado por Gerald (2 intervenciones) el 01/11/2013 15:03:08
Hola, requiero subtraer un string pero a partir de que salga la palabra 'Sede:'

Por ejemplo
Tabla. tbl_Persona
ID: codPersona
Campo: desDescripcion


ID: 1
Campo: Buenos Aires,Argentina. Sede: RH

Ocupo un select que me muestre la siguiente informacion

ID desDescripcion
1 Sede: RH

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Substraer un string a partir de una palabra

Publicado por leonardo_josue (877 intervenciones) el 01/11/2013 19:40:28
Hola Gerarld...

Me queda claro qué es lo que quieres obtener con la consulta, lo que no me queda claro en absoluto es qué fue lo que intentaste hacer para conseguirlo... porque quiero imaginar que al menos intentaste hacer algo no??? si es así, puede ser que no lo hayas conseguido, pero dónde está el código, o qué error es el que te está marcando...

Además hay otro problema: no nos dices con qué BD estás trabajando, por lo tanto es muy difícil darte una respuesta puntual. Aunque la mayoría e los DBMS's están basados en SQL, existen diferencias importantes en aspectos como las funciones para el manejo de cadenas, que en este caso son las que necesitas.

Puedes pedirle ayuda a SAN GOOGLE, el es muy milagroso y te puede dar la respuesta a casi cualquier pregunta.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Substraer un string a partir de una palabra

Publicado por Gerald (2 intervenciones) el 01/11/2013 20:15:00
Hola, claro que lo intente

1.
SELECT desDescripcion, SUBSTRING('Sede:', 1, 100) AS Initial
FROM TblPersona
WHERE desDescripcion like '%Sede%'
ORDER BY desDescripcion

2. SQL Server

3. Si existen esta clase de foros es por que uno posee una consulta y espera recibir ayuda de personas que contesten amablemente, créeme que consulte a tu SAN GOOGLE, lastimosamente tuve como ultima opción ingresar a este foro, prefiero no pensar que piensas que lo primero que hice fue ingresar a este foro sin antes buscar en google, seria un pensamiento demasiado cerrado, en estos casos si vas a comentar de la manera que lo realizaste para impresionar o hacerte pensar a ti mismo que fue inteligente tu respuesta, créeme que solo fue desperdicio de tiempo, próxima no contestes.
Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Substraer un string a partir de una palabra

Publicado por leonardo_josue (877 intervenciones) el 04/11/2013 16:01:54
Hola de nuevo Gerald

1
claro que lo intente

1. En tu post no lo dices, ni nos pones nada de código, no nos dices, intenté este código pero me marcó error, o no obtengo lo que esperaba... por lo tanto ES IMPOSIBLE DETERMINAR QUE AL MENOS INTENTASTE HACER ALGO...

2. ¿Sabes cuántas versiones de SQL server existen? y todas de ellas tienen diferencias importantes... Aquí en el trabajo tenemos SQL Server 2000, SQL Server 2005, SQL Server 2008 y con todas trabajamos con versiones EXPRESS y con versiones Enterprise... Ojo también con esto. Tal como te mencioné en el post pasado, sin saber con qué estás trabajando exactamente resulta complicado darte una respuesta puntual.


1
Si existen esta clase de foros es por que uno posee una consulta y espera recibir ayuda de personas que contesten amablemente

3. Este foro de consultas efectivamente existe para postear consultas y recibir ayuda, lo que no hacemos las personas que colaboramos aquí es hacer el trabajo de otros... te recuerdo que nosotros no recibimos paga de algún tipo, lo hacemos de manera desinteresada y tratando de ayudar siempre en lo que se puede... por el tono de tu mensaje tal pareciera que te he ofendido, lo cual no es la intención... Tal ves te parezca un "pensamiendo demasiado corto", pero tengo años resolviendo dudas en este y otro foros y te sorprendería la cantidad de personas que hacen justamente lo que digo, postear una pregunta esperando sólo hacer copy-paste para resolver sus problemas y molestándose si uno no lo hace.

1
próxima no contestes.

Estás muy equivocado amigo, yo no me ofendo por tus comentarios y mucho menos dejaré de ayudar si me es posible, y no busco reconocimiento, agradecimiento ni nada por el estilo... alguna vez entre a este foro haciendo cientos de preguntas y ahora trato de devolver algo de lo que aprendí...

Volviendo a tu problema, no estás tan errado, la función SUBSTING como ya has de haber leído, extrae una subcadena a partir de una posición en específico, en tu consulta de ejemplo, al poner 1, 100 como parámetros, estás extrayendo los primeros 100 caracteres de tu cadena, sin embargo esto no es lo que quieres verdad???

Esto serviría sólo si la palabra "Sede" estuviera desde el inicio de la cadena, pero por lo que entiendo esto puede variar en toda la cadena, por lo tanto, la posición de inicio puede cambiar para encontrar la palabra Sede...

Si revisas las funciones de SQL Server para el manejo de cadenas, te encontrarás con CHARINDEX:

http://technet.microsoft.com/en-us/library/ms186323.aspx

Esta función te sirve para determinar la posición en la que se encuentra una subcadena dentro de una cadena, de tal manera que lo único que tendrías que hacer es en lugar de poner un 1 fijo, colocar el resultado de la función CHARINDEX.

Observa este ejemplo en MySQL, hace exactamente lo mismo, pero en lugar de la función CHARINDEX utiliza la función INSTR:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
mysql> SELECT * FROM tabla;
+------+-----------------------------------------+
| id   | campo                                   |
+------+-----------------------------------------+
|    1 | Campo: Buenos Aires,Argentina. Sede: RH |
|    2 | Sede: Ciudad de México,México           |
|    3 | Sede: Buenos Aires,Argentina. Sede: RH  |
|    4 | Este campo tiene la sede al final Sede: |
|    5 | Este campo no tiene sede                |
+------+-----------------------------------------+
5 rows in set (0.00 sec)
 
mysql> SELECT campo, SUBSTRING(campo, INSTR(campo, 'Sede:')) sede FROM tabla;
+-----------------------------------------+----------------------------------------+
| campo                                   | sede   |
+-----------------------------------------+----------------------------------------+
| Campo: Buenos Aires,Argentina. Sede: RH | Sede: RH   |
| Sede: Ciudad de México,México           | Sede: Ciudad de México,México   |
| Sede: Buenos Aires,Argentina. Sede: RH  | Sede: Buenos Aires,Argentina. Sede:RH |
| Este campo tiene la sede al final Sede: | Sede:   |
| Este campo no tiene sede                |   |
+-----------------------------------------+----------------------------------------+
5 rows in set (0.00 sec)

Observa que el patrón de búsqueda que hago es la palabra "Sede:", de tal manera que la función INSTR muestra la posición de la primer aparición de la palabra y 0 si no existe...

1
2
3
4
5
6
7
8
9
10
11
mysql> SELECT campo, INSTR(campo, 'Sede:') sede FROM tabla;
+-----------------------------------------+------+
| campo                                   | sede |
+-----------------------------------------+------+
| Campo: Buenos Aires,Argentina. Sede: RH |   32 |
| Sede: Ciudad de México,México           |    1 |
| Sede: Buenos Aires,Argentina. Sede: RH  |    1 |
| Este campo tiene la sede al final Sede: |   35 |
| Este campo no tiene sede                |    0 |
+-----------------------------------------+------+
5 rows in set (0.00 sec)

Obviamente tendrás que hacer adecuaciones, pero como te comenté al inicio, no me gusta hacer el trabajo de otros.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Substraer un string a partir de una palabra

Publicado por leoncito (1 intervención) el 04/07/2016 23:16:32
Oye "leo" Si estas en este foro prácticamente y en definitiva le haces el trabajo al los que hacen consultas no te hagas el bobo ni quieras hacer bobos a los demás con tus comentarios "sofisticados" eres infinitamente ridículo, y si no te gusta hacer el trabajo a los demás sale del foro, usas una retórica absurda. DATE CUENTA QUE AL FINAL TERMINAS HACIENDOLE EL TRABAJO A LOS DEMAS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar