Ja, een afgeleide tabel is voldoende. Het binnenste select-blok hieronder is een afgeleide tabel. En elke afgeleide tabel heeft een naam nodig. In mijn geval xDerived
.
De strategie is om de afgeleide tabel het gebruik van de kolomnaam te laten opschonen. Uit de afgeleide chunk komt een schone kolom met de naam num
die de buitenste select gratis te gebruiken is.
Schema
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');
Zoekopdracht
select id,experience,num
from
( SELECT id,experience,
CONVERT(SUBSTRING_INDEX(experience,'-',1),UNSIGNED INTEGER) AS num
FROM employee
) xDerived
where num>=7;
Resultaten
+----+------------+------+
| id | experience | num |
+----+------------+------+
| 2 | 7-1 | 7 |
| 5 | 8-6 | 8 |
| 7 | 10-4 | 10 |
+----+------------+------+
Let op, uw @num
concept was defect, maar hopelijk heb ik geïnterpreteerd wat je hierboven bedoelde.
Ik ging ook voor 7 en niet voor 3 omdat al je voorbeeldgegevens zouden zijn teruggekeerd, en ik wilde je laten zien dat het zou werken.