Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

problema al hacer búsqueda con operador like

Estas en el tema de problema al hacer búsqueda con operador like en el foro de SQL Server en Foros del Web. manejo el sql server 2000 en español y bueno tengo la siguiente situación : Resulta q al buscar nombres con H no me encuentra los ...
  #1 (permalink)  
Antiguo 05/09/2007, 10:30
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años
Puntos: 4
problema al hacer búsqueda con operador like

manejo el sql server 2000 en español y bueno tengo la siguiente situación :

Resulta q al buscar nombres con H no me encuentra los q empiezan con CH es decir, si tengo JACH No lo encuentra, osea q la CH la toma como una sola palabra.

¿ Cómo puedo evitar eso ?


Mi sentencia sql es asi :

select nombre from proveedores where nombre like '%H%'
  #2 (permalink)  
Antiguo 05/09/2007, 11:25
 
Fecha de Ingreso: junio-2007
Ubicación: El Salvador
Mensajes: 21
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: problema al hacer búsqueda con operador like

raro , de hecho la condición que has indicado dice que te muestre todos los nombres de los proveedores que contengan la letra H en cualquier posición.

Lo probé y me funciona

select * from nombres

select nombre from nombres where nombre like '%H%'

ombre
--------------------------------------------------
JOSE
JACH

(2 filas afectadas)

nombre
--------------------------------------------------
JACH

(1 filas afectadas)

Igual tengo SQL 2000 SP4.
  #3 (permalink)  
Antiguo 05/09/2007, 12:12
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: problema al hacer búsqueda con operador like

Pues yo tampoco lo creo, necesitaria verlo para poder constatar que es cierto.
  #4 (permalink)  
Antiguo 05/09/2007, 12:46
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Re: problema al hacer búsqueda con operador like

La sentencia no tiene errores talvez le falta el service pack 4..

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #5 (permalink)  
Antiguo 05/09/2007, 14:19
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: problema al hacer búsqueda con operador like

OrHaro, tu problema debe originarse en la configuracion del "Collation" de tu tabla, mismo que considera ambos caracteres con un solo elemento.
Sin embargo esta la puedes especificar tambien al realizar la consulta.

Te anexo un ejemplo.

Código:
if object_id('tempdb..#tmpPrueba') is not null Drop table #tmpPrueba
create table #tmpPrueba (valorstr varchar(20))

Set nocount on

insert into #tmpPrueba values('pancho')
insert into #tmpPrueba values('hector')
insert into #tmpPrueba values('otrohector')

Select * from #tmpPrueba where valorstr like '%h%' collate traditional_spanish_ci_as

Select * from #tmpPrueba where valorstr like '%h%' collate modern_spanish_ci_as
Como veras ambos selects presentan resultados diferentes debido a la configuracion con la que le digo que haga la consulta. las ultimas dos secciones indican que se busque sin diferencias minusculas de mayusculas (Case Insensitive), pero que sí considere los caracteres con acento (accent sensitive) .

Espero te sirva.

Anexo fuente:

International Features in Microsoft SQL Server 2000

Características internacionales en Microsoft SQL Server 2005
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.

Última edición por Andres95; 05/09/2007 a las 14:26 Razón: Fuentes
  #6 (permalink)  
Antiguo 05/09/2007, 17:10
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: problema al hacer búsqueda con operador like

Andres95

Que comentario tan mas atinado, los famosos COLLATE, cierto !!!
  #7 (permalink)  
Antiguo 06/09/2007, 11:29
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años
Puntos: 4
Re: problema al hacer búsqueda con operador like

efectivamente era eso. La verdad lo desconocia, nuevamente mil gracias...
  #8 (permalink)  
Antiguo 01/04/2009, 12:04
 
Fecha de Ingreso: marzo-2009
Mensajes: 8
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Re: problema al hacer búsqueda con operador like

Cita:
Iniciado por jesolorzano Ver Mensaje
raro , de hecho la condición que has indicado dice que te muestre todos los nombres de los proveedores que contengan la letra H en cualquier posición.

Lo probé y me funciona

select * from nombres

select nombre from nombres where nombre like '%H%'

ombre
--------------------------------------------------
JOSE
JACH

(2 filas afectadas)

nombre
--------------------------------------------------
JACH

(1 filas afectadas)

Igual tengo SQL 2000 SP4.



Hola, tengo una duda y espero que puedan ayudarme, hago una consulta a una base de datos con la soguiente consulta:

$consulta = mysql_query("SELECT * FROM `hoteles` WHERE `nombre` LIKE '%".$_POST['nombre']."%' ORDER BY `categoria`") or die(mysql_error());

mi problema radica en que si busco por lapabra por ejemplo "plaza" si me muestra los hoteles que en su camponombre digan plaza (hotel plaza, country plaza, etc), pero por ejemplo pongo la palabra "morales" y no muestra Hotel morales, el cual SI existe en la bd, incluso no me dice que no encontro resultados puesto que si me muestra una prestanha de resultados que pongo cuando se han encontrado resultados, pero no muestra los resultados, esto pasa "solo" con algunos registros, espero que puedan ayudarme, de antemano gracias.

dejo el link por si quieren hecharle un vistazo a lo que digo

guadalajaraguadalajara[punto]com/ultimate/hoteles[punto]php

bites.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:48.