Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment comparer une variable définie par l'utilisateur dans MySQL ?

Oui, une table dérivée fera l'affaire. Le bloc de sélection interne ci-dessous est une table dérivée. Et chaque table dérivée a besoin d'un nom. Dans mon cas, xDerived .

La stratégie consiste à laisser la table dérivée nettoyer l'utilisation du nom de la colonne. Sortant du morceau dérivé est une colonne propre nommée num que la sélection externe est libre d'utiliser.

Schéma

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');

Requête

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

Résultats

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

Remarque, votre @num le concept était défectueux mais j'espère que j'ai interprété ce que vous vouliez faire ci-dessus.

De plus, j'ai opté pour 7 et non 3, car tous vos exemples de données auraient été renvoyés, et je voulais vous montrer que cela fonctionnerait.