sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo comparar una variable establecida por el usuario en MySQL?

Sí, una tabla derivada servirá. El bloque de selección interno a continuación es una tabla derivada. Y cada tabla derivada necesita un nombre. En mi caso, xDerived .

La estrategia es dejar que la tabla derivada limpie el uso del nombre de la columna. Del fragmento derivado sale una columna limpia llamada num que la selección externa es de uso gratuito.

Esquema

create table employee
(   id int auto_increment primary key,
    experience varchar(20) not null
);

-- truncate table employee;
insert employee(experience) values 
('4-5'),('7-1'),('4-1'),('6-5'),('8-6'),('5-9'),('10-4');

Consulta

select id,experience,num 
from 
(   SELECT id,experience, 
    CONVERT(SUBSTRING_INDEX(experience,'-',1),UNSIGNED INTEGER) AS num  
    FROM employee  
) xDerived 
where num>=7;

Resultados

+----+------------+------+
| id | experience | num  |
+----+------------+------+
|  2 | 7-1        |    7 |
|  5 | 8-6        |    8 |
|  7 | 10-4       |   10 |
+----+------------+------+

Tenga en cuenta que su @num el concepto era defectuoso, pero espero haber interpretado lo que querías hacer arriba.

Además, opté por 7 y no por 3 porque todos los datos de muestra habrían regresado y quería mostrarles que funcionaría.