FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour se puede en un SELECT insertar un IF?
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM
se puede en un SELECT insertar un IF?
Posted: Tue May 27, 2014 03:45 PM

Hola.
Tengo una tabla con dos campos:
cCampo1 que tiene un id
cCampo2 un string que puede contener:
111
011
000
101

y quiero hacer un select sobre esta tabla pero que solo me devuelva los que en la posicion 2 del cCampo2 contenga un "1", o sea:
111
011

Se puede hacer eso en un select?

gracias.

FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: se puede en un SELECT insertar un IF?
Posted: Tue May 27, 2014 04:10 PM
algo asi:

Code (fw): Select all Collapse
   select if(promedio>5,'Aprobado','Desaprobado') from notas


Salu2
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: se puede en un SELECT insertar un IF?
Posted: Tue May 27, 2014 04:49 PM
Un ejemplo usando IF y WHEN, saludos... :-)

Code (fw): Select all Collapse
cQryCerti := "SELECT *, CASE certi_status WHEN 0 THEN 'Anulado' " +;
      "WHEN 1 THEN 'Pendiente' WHEN 2 THEN 'Retornado' " +;
      "WHEN 3 THEN 'En Mora' END AS cEstado, " +;
      "IF(certi_1 = " + ClipValue2SQL( Val2Escape( oQry:parti_cedula ) ) + ", 'PRIMERO', " +;
      "IF(certi_2 = " + ClipValue2SQL( Val2Escape( oQry:parti_cedula ) ) + ", 'SEGUNDO', " +;
      "IF(certi_3 = " + ClipValue2SQL( Val2Escape( oQry:parti_cedula ) ) + ", 'TERCERO', " +;
      "IF(certi_4 = " + ClipValue2SQL( Val2Escape( oQry:parti_cedula ) ) + ", 'CUARTO', " +;
      "IF(certi_5 = " + ClipValue2SQL( Val2Escape( oQry:parti_cedula ) ) + ", 'QUINTO', " +;
      "IF(certi_6 = " + ClipValue2SQL( Val2Escape( oQry:parti_cedula ) ) + ", 'SEXTO', " +;
      "IF(certi_7 = " + ClipValue2SQL( Val2Escape( oQry:parti_cedula ) ) + ", 'SEPTIMO', ''))))))) AS posicion FROM piramide_certificados " +;
      "WHERE" +;//(certi_status = 1 OR certi_status = 3) AND" +;
      " (certi_1 = " + ClipValue2SQL( Val2Escape( oQry:parti_cedula ) ) + " OR" +;
      " certi_2 = " + ClipValue2SQL( Val2Escape( oQry:parti_cedula ) ) + " OR" +;
      " certi_3 = " + ClipValue2SQL( Val2Escape( oQry:parti_cedula ) ) + " OR" +;
      " certi_4 = " + ClipValue2SQL( Val2Escape( oQry:parti_cedula ) ) + " OR" +;
      " certi_5 = " + ClipValue2SQL( Val2Escape( oQry:parti_cedula ) ) + " OR" +;
      " certi_6 = " + ClipValue2SQL( Val2Escape( oQry:parti_cedula ) ) + " OR" +;
      " certi_7 = " + ClipValue2SQL( Val2Escape( oQry:parti_cedula ) ) + ") " +;
      "ORDER BY certi_fecha_impresion" // 0=Anulado, 1=Vendido, 2=Retornado, 3=En Mora
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM
Re: se puede en un SELECT insertar un IF?
Posted: Tue May 27, 2014 09:22 PM

(Y)

FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Re: se puede en un SELECT insertar un IF?
Posted: Wed May 28, 2014 12:29 AM

Hola,

dependiendo el DBMS puedes hacer algo asi

SELECT *
FROM tabla
WHERE substr( campo2, 2, 1 ) = '1'

revisa la función equivalente a substr del DBMS que estés utilizando, en MySQL SUBSTRING(str,pos,len) pero creo que SUBSTR es un sinónimo

saludos

Marcelo

Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM
Re: se puede en un SELECT insertar un IF?
Posted: Wed May 28, 2014 03:14 PM

Hola...

SELECT * FROM TUTABLA WHERE SUBSTRING(CAMPO2,2,1) LIKE "1"

Eso debería salir con fritas!!

Ojeda Esteban Eduardo.

Buenos Aires - Argentina.

FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport

Skype: jreduojeda
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM
Re: se puede en un SELECT insertar un IF?
Posted: Wed May 28, 2014 05:34 PM

perfecto!
y salio nomas.

gracias.

FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/

Continue the discussion