Ja, en härledd tabell duger. Det inre urvalsblocket nedan är en härledd tabell. Och varje härledd tabell behöver ett namn. I mitt fall, xDerived
.
Strategin är att låta den härledda tabellen rensa användningen av kolumnnamnet. En ren kolumn med namnet num
kommer ut ur den härledda biten som det yttre valet är gratis att använda.
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');
Fråga
select id,experience,num
from
( SELECT id,experience,
CONVERT(SUBSTRING_INDEX(experience,'-',1),UNSIGNED INTEGER) AS num
FROM employee
) xDerived
where num>=7;
Resultat
+----+------------+------+
| id | experience | num |
+----+------------+------+
| 2 | 7-1 | 7 |
| 5 | 8-6 | 8 |
| 7 | 10-4 | 10 |
+----+------------+------+
Observera, ditt @num
konceptet var felaktigt men förhoppningsvis tolkade jag vad du menade att göra ovan.
Dessutom valde jag 7 inte 3 eftersom alla dina exempeldata skulle ha returnerats, och jag ville visa dig att det skulle fungera.