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.
¿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 '~'.
Cita de: Carloswaldo 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 HeidiSql
MySQL si permite utilizar Expresiones Regulares (RLIKE), pero si las usas mejor evitar los comodines de LIKE como % y _
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
SELECT lat, long FROM antena_telefonicas WHERE provincia LIKE '[aeiou]%';
Referencia:
https://www.sqlservertutorial.net/sql-server-basics/sql-server-like/
Cita de: EdePC 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 _
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
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?
Cita de: rubcr en 28 Abril 2020, 22:13 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.
Cita de: rubcr en 28 Abril 2020, 21:45 PM
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.
Cita de: Carloswaldo en 28 Abril 2020, 22:18 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?
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
RLIKE '^[aeiou].*[aeiou]$'
Cita de: EdePC 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
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.
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):
SELECT 2 - 5
- Se pueden hacer subconsultas como se indica en la pág.: 596 en adelante:
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)
Cita de: EdePC 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):
SELECT 2 - 5
- Se pueden hacer subconsultas como se indica en la pág.: 596 en adelante:
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)
Ciudades y provincias son campos de la tabla antena_telefonicas por lo que el from estaría mal no?