Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL
Fujitsu COBOL Sub-Foro dedicado a Compiladores e IDE-s de Fujitsu.
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Sintaxis] COBOL y SQL Marengo97 GnuCOBOL (OpenCOBOL) 1 20 de noviembre de 2023 10:26
[Sintaxis] Sql Embebido condición where Hrmcobol PowerCOBOL (ActiveX, v4 - v11) 3 25 de abril de 2020 21:43
[Compilador] Microfocus Cobol y SQL Embebido EBERCAMACHO Micro Focus COBOL 3 9 de agosto de 2019 16:07
[Sintaxis] Error de sintaxis SQL GabrielACE AcuCobol 10 29 de enero de 2019 20:14
[Sintaxis] Sql Embebido Hrmcobol PowerCOBOL (ActiveX, v4 - v11) 23 28 de junio de 2017 01:09

Respuesta

  #1
Antiguo 28 de septiembre de 2021, 06:12
jjcol
Forero Junior
Última Actividad 17.06.2022 15:28
Posts Posts: 25
Likes enviados Enviados: 14
Likes recibidos Recibidos: 1
Configuración COBOL Y SQL
0 Inactivo Inactivo

Buenas noches alguien conoce cómo usar el EL WHERE LIKE es que necesito hacer una consulta que me traiga las filas que coincidan en cada columna.
ejemplo hago la consulta así:
Código SQL:
  1. SELECT varbile1, variable2, varible3 FROM TABLE WHERE columna1 LIKE  '%" dato_buscar "%' OR
  2. WHERE columna2 LIKE  '%" dato_buscar "%' OR
  3. WHERE columna3 LIKE  '%" dato_buscar "%'

pero no puedo hacer una cuarta búsqueda no funciona cuando hago la consulta alguien sabe por que puede ser necesito recorrer 10 columnas para buscar datos que coincidan uso power cobol 9.
jjcol is offline   Responder Con Cita
  #2
Antiguo 28 de septiembre de 2021, 09:22
JCantero
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros 
Última Actividad 02.09.2026 00:15
Posts Posts: 442
Likes enviados Enviados: 167
Likes recibidos Recibidos: 269

Te sobran los where.

Debe de ser así

Código SQL:
  1. SELECT varbile1, variable2, varible3 FROM TABLE WHERE
  2.                columna1 LIKE '%" dato_buscar "%' OR
  3.                columna2 LIKE '%" dato_buscar "%' OR
  4.                columna3 LIKE '%" dato_buscar "%'




De cualquier forma te recomiendo que en vez de estar probando en COBOL prueba el SELECT en la base de datos y cuando tengas lo que tu necesitas, te lo llevas al COBOL
JCantero is offline   Responder Con Cita
  #3
Antiguo 28 de septiembre de 2021, 09:25
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@jjcol, un cliente SQL que yo uso desde hace más de 5 años: [Aporte] DBeaver - cliente SQL Freeware (OpenSource) - COBOL Foro



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #4
Antiguo 28 de septiembre de 2021, 12:08
Xavier
Forero Junior
Última Actividad 17.11.2021 12:04
Posts Posts: 24
Likes enviados Enviados: 13
Likes recibidos Recibidos: 3

Yo la consulta la haría de esta forma
Código COBOL:
  1. WORKING-STORAGE SECTION.
  2.     01 DatoABuscar    PIC X(....).
Código COBOL:
  1.      EXEC SQL BEGIN DECLARE SECTION END-EXEC.
  2.           01 CampoDeBusqueda   PIC X(...).
  3.           01 ResultadoDato1          PIC X(...).
  4.           01 ResultadoDato2          PIC X(...).
  5.           01 ResultadoDato3          PIC X(...).
  6.       EXEC SQL END DECLARE SECTION END-EXEC.

Código COBOL:
  1. PROCEDURE DIVSION.
  2.     MOVE SPACES TO  DatoABuscar1
  3.  
  4.     MOVE "Lo que quiero buscar"  TO DatoABuscar
  5.     STRING "%" Delimited by size
  6.                    DatoABuscar Delimited by "     "
  7.                   "%" Delimited by size
  8.                         INTO CampoDeBusqueda1

De esta forma, el campo "CampoDeBusqueda" quedaría algo así como "%Lo que quiero buscar%"
y luego, la sentencia SQL, sería

Código SQL:
  1. EXEC SQL
  2.                SELECT dato1, dato2, dato3
  3.                    INTO :ResultadoDato1, :ResultadoDato2, :ResultadoDato3
  4.                    FROM Tabla
  5.                 WHERE Campo1 LIKE CampoDeBusqueda1,
  6.                AND/OR Campo2 LIKE CampoDeBusqueda1
  7.      END-EXEC
Xavier is offline   Responder Con Cita
  #5
Antiguo 29 de septiembre de 2021, 00:36
jjcol
Forero Junior
Última Actividad 17.06.2022 15:28
Posts Posts: 25
Likes enviados Enviados: 14
Likes recibidos Recibidos: 1

Muchas gracias por su respuestas pero es que si me funciona como lo tengo el problema es que no puedo hacer
la búsqueda en mas de 3 columnas cuando uso el 4 cuarto columan4 LIKE
las basqueas por LIKE tienen algún limite ?

---------- Post añadido : 17:36 ---------- Post anterior : 16:58 ----------

Citación del post de JCantero Ver Mensaje
Te sobran los where.

Debe de ser así

Código SQL:
  1. SELECT varbile1, variable2, varible3 FROM TABLE WHERE
  2.                columna1 LIKE '%" dato_buscar "%' OR
  3.                columna2 LIKE '%" dato_buscar "%' OR
  4.                columna3 LIKE '%" dato_buscar "%'
Si yo lo uso igual es que que tenia un pco de afán y escribí y redacte mal la parte del código pero el problema que tengo es que solo dejar hacer esa tres consultas si le agrego otra consulta no puedo deja de funcionar
jjcol is offline   Responder Con Cita
  #6
Antiguo 29 de septiembre de 2021, 09:58
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@jjcol, enséñanos la consulta que no funciona, a ver



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #7
Antiguo 29 de septiembre de 2021, 18:05
JCantero
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros 
Última Actividad 02.09.2026 00:15
Posts Posts: 442
Likes enviados Enviados: 167
Likes recibidos Recibidos: 269

Revisa la longitud del string donde montas la consulta para ver el tamaño que tiene.

Pero como dice @Kuk, pon el trozo de codigo donde haces la consulta para poder ayudarte
JCantero is offline   Responder Con Cita
  #8
Antiguo 30 de septiembre de 2021, 03:51
jjcol
Forero Junior
Última Actividad 17.06.2022 15:28
Posts Posts: 25
Likes enviados Enviados: 14
Likes recibidos Recibidos: 1

adjunto el código pero revisando me di de cuenta que solo me trae el dato si coinciden exactamente igual y no por si tiene alguna coincidencia.
y solo me funciona con las tres primeras búsquedas
Código COBOL:
  1. [SQL]STRING "SELECT "
  2.             "nit, "
  3.               "nombre, "
  4.               "apellido, "
  5.               "telefono, "
  6.               "celular, "
  7.               "direccion, "
  8.               "salario, "
  9.               "bonos, "
  10.               "extras"
  11.             "FROM usuario WHERE "
  12.             "nit LIKE '%" busqueda "%' OR "
  13.             "nombre LIKE '%" busqueda "%' OR "
  14.             "apellido LIKE '%" busqueda "%' "[/SQL]


pero de esta forma no funciona que son con mas de tres búsquedas

Código COBOL:
  1. [SQL]STRING "SELECT "
  2.             "nit, "
  3.               "nombre, "
  4.               "apellido, "
  5.               "telefono, "
  6.               "celular, "
  7.               "direccion, "
  8.               "salario, "
  9.               "bonos, "
  10.               "extras"
  11.             "FROM usuario WHERE "
  12.             "nit LIKE '%" busqueda "%' OR "
  13.             "nombre LIKE '%" busqueda "%' OR "
  14.             "apellido LIKE '%" busqueda "%' OR"
  15.             "telefono LIKE '%" busqueda "%' OR "
  16.             "celular LIKE '%" busqueda "%' OR "
  17.             "direccion LIKE '%" busqueda "%'"[/SQL]
jjcol is offline   Responder Con Cita
  #9
Antiguo 30 de septiembre de 2021, 08:53
JCantero
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros 
Última Actividad 02.09.2026 00:15
Posts Posts: 442
Likes enviados Enviados: 167
Likes recibidos Recibidos: 269

Citación del post de jjcol Ver Mensaje
me di de cuenta que solo me trae el dato si coinciden exactamente igual y no por si tiene alguna coincidencia.
y solo me funciona con las tres primeras búsquedas
Revisa esto:

Pones:

Código COBOL:
  1.  WHERE "
  2.            "nit LIKE '%" busqueda "%' OR

Si busqueda es un string de 20 y contiene "pepe " esta buscando

Código COBOL:
  1.  WHERE "
  2.            "nit LIKE '%pepe       %' OR


Cuando tu quieres buscar:

Código COBOL:
  1.  WHERE "
  2.            "nit LIKE '%pepe%' OR

Entonces debes de poner, en este caso;

Código COBOL:
  1.  WHERE "
  2.            "nit LIKE    '%"      busqueda(1:4)     "%' OR

O sea que tienes que delimitar el string busqueda, ya que creo, te esta buscando los espacios

Código COBOL:
  1.  
  2. perform varying i from 2 by 1 until i = 21 or busqueda(i:) = ' '
  3.    continue
  4. end-perform
  5.  


Código COBOL:
  1.  
  2.  WHERE "
  3.            "nit LIKE '%"    busqueda(1:i-1)     "%' OR
JCantero is offline   Responder Con Cita
Respuesta


Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 18:35.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.