MySQL - ERROR 1064

 
Vista:
sin imagen de perfil

ERROR 1064

Publicado por FRANCISCO (2 intervenciones) el 01/06/2017 18:39:06
Buenas tardes:

Acabo de ingresar en este foro y os diré que hace poco empecé a estudiar MySQL.

Estoy viendo la condición CASE y me lanza el error 1064 (42000) en el siguiente caso:

SELECT *, CASE SUELDO WHEN >1500 THEN "BUENO" ELSE "MALO" END FROM USUARIOS;

Parece que el problema está en el operador >

Si lo quito y pongo SELECT *, CASE SUELDO WHEN 1500 THEN "BUENO" ELSE "MALO" END FROM USUARIOS; funciona bien, pero claro aquí solo puedo ver si SUELDO = 1500.

Por más que he probado con los operadores > < =, etc, me da error.

Agradecidos a quien me pueda ayudar, de lo que supongo es una chorrada, pero ya os digo que soy novato en MySQL

Gracias
Paco Martínez
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

ERROR 1064

Publicado por FRANCISCO (2 intervenciones) el 01/06/2017 19:13:43
Me respondo yo mismo:

1
SELECT *, CASE  WHEN SUELDO>1500 THEN "BUENO" ELSE "MALO" END FROM USUARIOS;

Gracias de todos modos, ya os he comentado que soy novato en esto de MySQL

Un saludo
Paco Martínez
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

ERROR 1064

Publicado por leonardo_josue (414 intervenciones) el 01/06/2017 21:28:14
Hola Francisco:

Gracias por compartir la respuesta, pero creo que vale la pena ampliar un poco más el tema por si le puede servir a alguien más. Te comento que el CASE-WHEN maneja dos tipos de sintáxis:

1. CASE-WHEN estilo selección: funciona como el CASE o SWITCH de los lenguajes de programación, compara UN CAMPO contra todos los valores que puede tomar, funciona por ejemplo para los días de la semana

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
mysql> set @num_dia = 1;
mysql> SELECT @num_dia, CASE @num_dia
    ->                                WHEN 1 THEN 'Lunes'
    ->                                WHEN 2 THEN 'Martes'
    ->                                WHEN 3 THEN 'Miércoles'
    ->                  END nom_dia;
+----------+---------+
| @num_dia | nom_dia |
+----------+---------+
|        1 | Lunes   |
+----------+---------+
1 row in set (0.02 sec)
 
mysql> SET @num_dia = 3;
mysql> SELECT @num_dia, CASE @num_dia WHEN 1 THEN 'Lunes'
    ->                                WHEN 2 THEN 'Martes'
    ->                                WHEN 3 THEN 'Miércoles'
    ->                  END nom_dia;
+----------+------------+
| @num_dia | nom_dia    |
+----------+------------+
|        3 | Miércoles  |
+----------+------------+
1 row in set (0.00 sec)

Como bien comentas, todas las comparaciones son de tipo igual (=)

2. CASE WHEN de Búsqueda: Funciona como un IF ANIDADO de programación, donde puedes HACER CUALQUIER TIPO DE COMPARACIÓN (<,>, >=, <=, =, !=), funciona por ejemplo para determinar si una persona es mayor de edad o no:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
mysql> SET @edad = 15;
Query OK, 0 rows affected (0.00 sec)
 
mysql> SELECT @edad, CASE WHEN @edad < 18 THEN 'ERES MENOR DE EDAD'
    ->                    WHEN @edad BETWEEN 18 AND 99 THEN 'ERES MAYOR DE EDAD'
    ->                    WHEN @edad >= 100 THEN '¿ERES UN DINOSAURIO?'
    ->               END desc_edad;
+-------+--------------------+
| @edad | desc_edad          |
+-------+--------------------+
|    15 | ERES MENOR DE EDAD |
+-------+--------------------+
1 row in set (0.01 sec)
 
mysql> SET @edad = 150;
Query OK, 0 rows affected (0.00 sec)
 
mysql> SELECT @edad, CASE WHEN @edad < 18 THEN 'ERES MENOR DE EDAD'
    ->                    WHEN @edad BETWEEN 18 AND 99 THEN 'ERES MAYOR DE EDAD'
    ->                    WHEN @edad >= 100 THEN '¿ERES UN DINOSAURIO?'
    ->               END desc_edad;
+-------+-----------------------+
| @edad | desc_edad             |
+-------+-----------------------+
|   150 | ¿ERES UN DINOSAURIO?  |
+-------+-----------------------+
1 row in set (0.00 sec)

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar