elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Sentencia SQL
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Sentencia SQL  (Leído 1,049 veces)
rubcr

Desconectado Desconectado

Mensajes: 51


Ver Perfil
Sentencia SQL
« en: 28 Abril 2020, 21:13 pm »

Buenas a todos.
Tengo un problema con una sentencia, la cual tiene que obtener la latitud y longitud de todas las antenas de la provincias que empiecen por vocal.

La selección que tengo es la siguiente:
SELECT lat, long FROM antena_telefonicas WHERE provincia LIKE '[aeiou]%';
El problema es que no me devuelve ningún dato, la sentencia no genera ningún error, pero no da datos.
El problema creo que está en el LIKE pero no sé cuál es.

Espero que alguien sepa ayudarme.
Un saludo.


« Última modificación: 28 Abril 2020, 21:17 pm por rubcr » En línea

Carloswaldo
Traductor
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.741


Nos reservamos el derecho de ban.


Ver Perfil WWW
Re: Sentencia SQL
« Respuesta #1 en: 28 Abril 2020, 21:25 pm »

¿De qué motor de base de datos estamos hablando?

Me parece que LIKE no es para expresiones regulares. Al menos no lo es en PostgreSQL donde usaría SIMILAR TO o '~'.


En línea

rubcr

Desconectado Desconectado

Mensajes: 51


Ver Perfil
Re: Sentencia SQL
« Respuesta #2 en: 28 Abril 2020, 21:45 pm »

¿De qué motor de base de datos estamos hablando?

Me parece que LIKE no es para expresiones regulares. Al menos no lo es en PostgreSQL donde usaría SIMILAR TO o '~'.
En HeidiSql
En línea

EdePC
Colaborador
***
Desconectado Desconectado

Mensajes: 1.564



Ver Perfil
Re: Sentencia SQL
« Respuesta #3 en: 28 Abril 2020, 22:02 pm »

MySQL si permite utilizar Expresiones Regulares (RLIKE), pero si las usas mejor evitar los comodines de LIKE como % y _

Código
  1. SELECT lat, long FROM antena_telefonicas WHERE provincia RLIKE '^[aeiou]';

MySQL Documentación (versión vieja 5.0, única en español) pág.: 176
http://downloads.mysql.com/docs/refman-5.0-es.a4.pdf

SQLServer por su parte ya incluye "expresiones regulares" que en realidad extiende más sus Comodines en LIKE
Código
  1. SELECT lat, long FROM antena_telefonicas WHERE provincia LIKE '[aeiou]%';

Referencia:
https://www.sqlservertutorial.net/sql-server-basics/sql-server-like/
En línea

rubcr

Desconectado Desconectado

Mensajes: 51


Ver Perfil
Re: Sentencia SQL
« Respuesta #4 en: 28 Abril 2020, 22:13 pm »

MySQL si permite utilizar Expresiones Regulares (RLIKE), pero si las usas mejor evitar los comodines de LIKE como % y _

Código
  1. SELECT lat, long FROM antena_telefonicas WHERE provincia RLIKE '^[aeiou]';

MySQL Documentación (versión vieja 5.0, única en español) pág.: 176
http://downloads.mysql.com/docs/refman-5.0-es.a4.pdf

SQLServer por su parte ya incluye "expresiones regulares" que en realidad extiende más sus Comodines en LIKE
Código
  1. SELECT lat, long FROM antena_telefonicas WHERE provincia LIKE '[aeiou]%';

Referencia:
https://www.sqlservertutorial.net/sql-server-basics/sql-server-like/
Entonces atendiendo a las sentencias que has escrito para mi sería válida la segunda de ellas?
En línea

Carloswaldo
Traductor
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.741


Nos reservamos el derecho de ban.


Ver Perfil WWW
Re: Sentencia SQL
« Respuesta #5 en: 28 Abril 2020, 22:18 pm »

Entonces atendiendo a las sentencias que has escrito para mi sería válida la segunda de ellas?

La segunda es para SQL Server.

En HeidiSql

HeidiSql no es el motor, es un programa para conectarse a un motor de base de datos. Aunque muy probablemente estamos hablando de MySQL (o derivados) entonces.
Si es así tendrías que usar la 1era sentencia que mostró EdePC.
En línea

rubcr

Desconectado Desconectado

Mensajes: 51


Ver Perfil
Re: Sentencia SQL
« Respuesta #6 en: 28 Abril 2020, 22:35 pm »

La segunda es para SQL Server.

HeidiSql no es el motor, es un programa para conectarse a un motor de base de datos. Aunque muy probablemente estamos hablando de MySQL (o derivados) entonces.
Si es así tendrías que usar la 1era sentencia que mostró EdePC.
Y en el caso por ejemplo que fuera que la provincia no empezase ni acabase por consonante como sería la sintaxis?
En línea

EdePC
Colaborador
***
Desconectado Desconectado

Mensajes: 1.564



Ver Perfil
Re: Sentencia SQL
« Respuesta #7 en: 29 Abril 2020, 00:23 am »

Le has dado su leída al PDF que puse antes (pág.: 176)? Tienes que combinar ^ para forzar empezar con, [aeiou] que serán las vocales, luego un .* para decir cualquier otro conjunto de caracteres y finalizar con [aeiou]$ para decir que debe terminar en vocal

Código
  1. RLIKE '^[aeiou].*[aeiou]$'
En línea

rubcr

Desconectado Desconectado

Mensajes: 51


Ver Perfil
Re: Sentencia SQL
« Respuesta #8 en: 29 Abril 2020, 01:33 am »

Le has dado su leída al PDF que puse antes (pág.: 176)? Tienes que combinar ^ para forzar empezar con, [aeiou] que serán las vocales, luego un .* para decir cualquier otro conjunto de caracteres y finalizar con [aeiou]$ para decir que debe terminar en vocal

Código
  1. RLIKE '^[aeiou].*[aeiou]$'
De acuerdo muchas gracias amigo.
Ahora tengo cuestión: siendo C el numero de ciudades de la tabla y P el numero de provincias devuelve la diferencia entre los dos valores.
Entiendo que hay que hacer una sentencia que cuente el numero de ciudades, el numero de provincias y que se resten los dos valores, pero no entiendo como puedo hacerlo.
En línea

EdePC
Colaborador
***
Desconectado Desconectado

Mensajes: 1.564



Ver Perfil
Re: Sentencia SQL
« Respuesta #9 en: 29 Abril 2020, 02:37 am »

Depende del contexto del ejercicio, como que instrucciones permite utilizar, si se puede usar variables o subconsultas, etc

Teniendo en cuenta que en MySQL es válido hacer una simple resta de 2-5 para obtener -3 (pág.: 596 del PDF):

Código
  1. SELECT 2 - 5

- Se pueden hacer subconsultas como se indica en la pág.: 596 en adelante:

Código
  1. SELECT ABS( ( SELECT COUNT(*) FROM ciudades) - ( SELECT COUNT(*) FROM provincias) )

- El ABS() es para obtener siempre un número positivo (pág.: 597)

Pero dado que tu ejercicio menciona un C y un P,  debe hacer uso de algo más, quizá variables (pág.: 510)
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con sentencia sql « 1 2 3 »
Bases de Datos
50l3r 24 12,991 Último mensaje 26 Marzo 2010, 20:13 pm
por ssccaann43 ©
Ayuda con sentencia sql!!
Bases de Datos
Hartigan 4 2,252 Último mensaje 28 Julio 2010, 16:52 pm
por ssccaann43 ©
Sentencia SQL
Bases de Datos
TheGhost(Z) 2 2,039 Último mensaje 6 Marzo 2011, 17:35 pm
por raul338
Sentencia Goto en Php , Salto de sentencia en Php
PHP
Graphixx 3 2,505 Último mensaje 24 Mayo 2012, 17:46 pm
por Graphixx
Sentencia sql
Bases de Datos
thebus4k 1 381 Último mensaje 8 Mayo 2020, 18:58 pm
por ThunderCls
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines