Se puede hacer esto ?

Se puede hacer esto ?

Postby Pedro » Sun May 29, 2016 8:00 pm

Hola a todos

Me gustaría saber si se puede usar en una búsqueda SQL SELECT * FROM XXX WHERE Substr(campo,1,3) = Expresion ORDER BY (campo de orden)
y como ponerlo en la sentencía

Gracias
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Se puede hacer esto ?

Postby fgondi » Sun May 29, 2016 9:03 pm

La función que buscas en sql es SubString()

https://msdn.microsoft.com/es-es/library/ms187748(v=sql.120).aspx
Un saludo
Fernando González Diez
ALSIS Sistemas Informáticos
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España

Re: Se puede hacer esto ?

Postby Carlos Mora » Tue May 31, 2016 11:09 am

Pedro,
usar una funcion en el where probablemente suprima las optimizaciones que suele hacer un SQL. En MySQL puede usar un SELECT * FROM XXX WHERE campo LIKE "ABC%", que es mucho más rápido porque sabe como optimizarlo. Si usas otro motor habrá que ver si soporta el LIKE.

Un saludo
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Carlos Mora
 
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: Se puede hacer esto ?

Postby Pedro » Tue May 31, 2016 3:36 pm

Gracias por la respuesta Fernando, pero no me hace el recordset usando SUBSTRING.

Carlos estoy usando ADO con un ACCESS y el tema es que el campo por el que quiero sacar los datos tiene un ancho de 8 caracteres, pero solo quiero pillar los 3 primeros y que me saque todos los registros, cuyos 3 primeros digitos de ese campo sean iguales a los solicitados por el usuario, y creo que puede soportar LIKE perfectamente
Last edited by Pedro on Tue May 31, 2016 3:42 pm, edited 1 time in total.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Se puede hacer esto ?

Postby Francisco Horta » Wed Jun 01, 2016 5:10 pm

Pedro,

prueba asi,

SELECT * FROM tu_tabla WHERE tu_campo LIKE "%PAQ"

aqui te va a regresar en la consulta todos los registros que en tu campo empiecen con PAQ

Saludos
Paco
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Re: Se puede hacer esto ?

Postby Pedro » Thu Jun 02, 2016 6:54 am

Gracias Francisco, lo conseguí con LIKE y me regresa bien los registros cuyos tres primeros dígitos sean iguales a los pedidos por el usuario.

Ahora tengo otra duda, como hacer una comparación de un campo lógico, es decir traer todos aquellos registros cuyo campo X sea Verdadero , o Falso según se pida.
Lo he intentado comparando el campo con Cero y Uno, pero no me trae registros

Un saludo a todos
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Se puede hacer esto ?

Postby acuellar » Thu Jun 02, 2016 10:30 am

Pedro

Así
Code: Select all  Expand view

  WHERE !CampoLógico // para .F. También se puede poner NOT CampoLógico
  WHERE CampoLógico // para .T.
 


Saludos,

Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1593
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Se puede hacer esto ?

Postby Francisco Horta » Sat Jun 04, 2016 2:40 pm

Pedro,

como dice ademar o asi:
Code: Select all  Expand view

WHERE tu_campologico = '0'
WHERE tu_campologico = '1'
WHERE tu_campologico is not null
WHERE tu_campologico is null
 


Saludos
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Re: Se puede hacer esto ?

Postby Carlos Mora » Sat Jun 04, 2016 3:38 pm

Pedro,

Pedro wrote:... como hacer una comparación de un campo lógico, es decir traer todos aquellos registros cuyo campo X sea Verdadero , o Falso según se pida.
Lo he intentado comparando el campo con Cero y Uno, pero no me trae registros

Si pones la consulta que estás haciendo seguro que vamos a corregir lo que pudiera estar mal, es mucho más sencillo trabajar sobre algo, sino solo podemos hacer especulaciones.

un saludo
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Carlos Mora
 
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 91 guests