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

sentencia sql "SELECT" como se busca un rango entre m-ñ???

Estas en el tema de sentencia sql "SELECT" como se busca un rango entre m-ñ??? en el foro de Bases de Datos General en Foros del Web. hola gente: tengo el siguiente inconvieniente: tengo un listado en donde se puede seleccionar el rango a buscar (a-b, c-d, e-f, g-h, ...,m-ñ, etc.), la ...
  #1 (permalink)  
Antiguo 20/06/2005, 15:01
Avatar de deet  
Fecha de Ingreso: mayo-2005
Ubicación: Córdoba - Argentina
Mensajes: 269
Antigüedad: 19 años, 6 meses
Puntos: 1
sentencia sql "SELECT" como se busca un rango entre m-ñ???

hola gente:

tengo el siguiente inconvieniente:

tengo un listado en donde se puede seleccionar el rango a buscar (a-b, c-d, e-f, g-h, ...,m-ñ, etc.), la sentencia sql select que yo uso es:

SELECT * from mytabla where nombre REGEXP '^[$buscar]'

donde $buscar es el rango seleccionado en el select (a-b, c-d, e-f, g-h, ...,m-ñ, etc)

el problema radica cuando quiero buscar el rango m-ñ, SQL no me acepta el caracter "ñ", pero si cambio el rango m-n por m-o, en el resultado de la consulta me devuelve los nombre que empiezan con (m,n,o), pero no me devuelve los que empiezan con el caracter "ñ".

si alguien tiene alguna sugerencia, soy todo oidos.

de antemano muchas gracias.
  #2 (permalink)  
Antiguo 21/06/2005, 07:52
Avatar de yeti  
Fecha de Ingreso: octubre-2004
Ubicación: España, Madrid
Mensajes: 152
Antigüedad: 20 años, 1 mes
Puntos: 0
Podrias probar a buscar por el codigo ascii del caracter "ñ"
__________________
Cuando creas que no hay solución posible, busca en los foros, siempre en mejor tener a la red mundial de tu parte
  #3 (permalink)  
Antiguo 21/06/2005, 07:55
Avatar de yeti  
Fecha de Ingreso: octubre-2004
Ubicación: España, Madrid
Mensajes: 152
Antigüedad: 20 años, 1 mes
Puntos: 0
olvida el post anterior, acabo de ver q el codigo ascii no tiene el caracter "ñ".
No se me ocurre aora mismo ningun modo de resolverlo
__________________
Cuando creas que no hay solución posible, busca en los foros, siempre en mejor tener a la red mundial de tu parte
  #4 (permalink)  
Antiguo 21/06/2005, 12:02
Avatar de Carcharhinus  
Fecha de Ingreso: septiembre-2004
Mensajes: 264
Antigüedad: 20 años, 2 meses
Puntos: 0
el caracter no te lo acepta al escribirlo? o es en el Query donde te señala algun error? seia bueno si nos proporcionas el error que te aparece para poder opinar..porque podria ser que no tengas ningun registro con la letra 'Ñ' o se deba a la instlacion del SQL donde le indicas que te acepte ese tipo de caracteres ( ´¨ etc)
  #5 (permalink)  
Antiguo 21/06/2005, 14:23
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 6 meses
Puntos: 25
El problema es que dentro del alfabeto configurado de tu base de datos la Ñ no es la letra que sigue a la M, pues el alfabeto americano (el default) no la contempla.

Si estas usando SQL Server se me ocurre que cambies el Collation por uno que contemple la Ñ como parte del alfabeto normal.

Una manera de obtenerlo ahora es mediante WHERE LEFT(campo, 1) IN ('m', 'ñ'); eso soluciona el problema pero no te da una solucion estándar como creo es lo que buscas (par eso sería el collation)
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #6 (permalink)  
Antiguo 21/06/2005, 16:50
Avatar de deet  
Fecha de Ingreso: mayo-2005
Ubicación: Córdoba - Argentina
Mensajes: 269
Antigüedad: 19 años, 6 meses
Puntos: 1
Cita:
Iniciado por Mithrandir
El problema es que dentro del alfabeto configurado de tu base de datos la Ñ no es la letra que sigue a la M, pues el alfabeto americano (el default) no la contempla.

Si estas usando SQL Server se me ocurre que cambies el Collation por uno que contemple la Ñ como parte del alfabeto normal.

Una manera de obtenerlo ahora es mediante WHERE LEFT(campo, 1) IN ('m', 'ñ'); eso soluciona el problema pero no te da una solucion estándar como creo es lo que buscas (par eso sería el collation)
Si contempla el caracter Ñ, pero como vos decias la Ñ no es la letra que sigue a la M, hice una prueba como muestro en el siguiente script
Código PHP:
include("conex.php");
$link=conect();
$sql="select * from clientes where nombre regexp '^[Ñ-M]'";
$result=mysql_query($sql);
while(
$row=mysql_fetch_array($result)){
    echo 
"->{$row["nombre"]}<br />";
}
/*
la salida me muestra 
->Cardenal
->Canario
->Gilguero
...
->Ñandu
*/ 
creo que voy a tener que usar otra forma de sentenciar.

gracias por los que postearon.

Última edición por deet; 21/06/2005 a las 18:04
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 14:28.