PDA

Ver la Versión Completa : buscar numeros en campo de tipo char!!!!!!!!!


david_uh
13-11-2008, 18:42:46
Saludos foro

Estoy trabajando con delphi 6 y Firebird 2 tengo una tabla con las ventas del día, en la que hay un campo "nro de documento" que es de tipo char(12), para almacenar el nro de documento, el hecho es que cuando han llenado datos los usuarios, han puesto valores como: 000123, 0001254, 012364 y mi problema es a la hora de hacer la búsqueda, ya que se pide ubicar el docuemnto 123 y no lo encuentra como "000123" no es igual a "123" chra(acteristicamente ) hablando no lo encuentra.

Mi pregunta es como hago para que una búsqueda de "123" me liste a todo los "000123" , "00123", "0123", etc

Agradecido de antemano por cualquier respuesta me despido

David

ContraVeneno
13-11-2008, 18:46:07
Select *
from tabla
where documento like '%123'

:confused: No recuerdo como funciona firebird, pero la idea es la misma, siendo "%" el caracter comodín.

david_uh
13-11-2008, 18:49:55
si gracias pero eso me botaria valore comoç
000123
656123
902123
y lo que yo deseo es solo los que empiezen en ceros
00123
0123
00123

eduarcol
13-11-2008, 19:01:55
where Cast(Documento as Integer) = 123

lo estoy diciendo de memoria, pero basicamente asi deberia funcionar.

david_uh
13-11-2008, 19:08:10
bueno no es por ser molestoso pero pasa que a veces pone "A000123" osea que existe la posibilidad de que haya letras si hago el cast() a integer me daria problemas?

eduarcol
13-11-2008, 19:23:35
bueno no es por ser molestoso pero pasa que a veces pone "A000123" osea que existe la posibilidad de que haya letras si hago el cast() a integer me daria problemas?

jajaja, pues tienes razon, tienes problemas jajaja :D:D

david_uh
13-11-2008, 19:25:09
jajaja mmm mmmm m buaaaaaaa buaaaaaaa buaaaaaaa :mad:

ContraVeneno
13-11-2008, 19:53:20
tu campo donde guardas el número de documento, ¿de cuantos caracteres es? ¿10, 15, infinito?

ContraVeneno
13-11-2008, 20:03:26
Declare @Buscar varchar(20)

Select @Buscar = '123'

Select Folio
From UnaTabla
Where Folio like '%'+@Buscar
and IsNumeric(left(Folio, len(Replace(Folio, ' ', ''))-len(@Buscar))) = 1
and cast(left(Folio, len(Replace(Folio, ' ', ''))-len(@Buscar)) as integer) = 0


Esto me funciona en SQL Server

Con los folios:

456
A00123
00123
0000123
0045123


Me regresa:

00123
0000123

david_uh
26-11-2008, 22:31:53
bien lo he puesto asi pero no me funciona en firebird como seria para hacer eso usadno sql standar o sql que entienda firebird

eduarcol
26-11-2008, 22:51:53
podrias colocar como lo escribistes en Firebird?

De pronto el @Buscar no lo has sustituido por :Buscar, dado que firebird comienza los parametros con :