Page 1 of 1

Se puede hacer esto ?

Posted: Sun May 29, 2016 8:00 pm
by Pedro
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

Re: Se puede hacer esto ?

Posted: Sun May 29, 2016 9:03 pm
by fgondi
La función que buscas en sql es SubString()

https://msdn.microsoft.com/es-es/librar ... .120).aspx

Re: Se puede hacer esto ?

Posted: Tue May 31, 2016 11:09 am
by Carlos Mora
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

Re: Se puede hacer esto ?

Posted: Tue May 31, 2016 3:36 pm
by Pedro
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

Re: Se puede hacer esto ?

Posted: Wed Jun 01, 2016 5:10 pm
by Francisco Horta
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

Re: Se puede hacer esto ?

Posted: Thu Jun 02, 2016 6:54 am
by Pedro
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

Re: Se puede hacer esto ?

Posted: Thu Jun 02, 2016 10:30 am
by acuellar
Pedro

Así

Code: Select all

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

Adhemar

Re: Se puede hacer esto ?

Posted: Sat Jun 04, 2016 2:40 pm
by Francisco Horta
Pedro,

como dice ademar o asi:

Code: Select all

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

Re: Se puede hacer esto ?

Posted: Sat Jun 04, 2016 3:38 pm
by Carlos Mora
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