Ja, en afledt tabel gør det. Den indre udvalgsblok nedenfor er en afledt tabel. Og hver afledt tabel har brug for et navn. I mit tilfælde xDerived
.
Strategien er at lade den afledte tabel rense brugen af kolonnenavnet. Ud af den afledte chunk kommer en ren kolonne ved navn num
som det ydre udvalg er gratis at bruge.
Skema
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');
Forespørgsel
select id,experience,num
from
( SELECT id,experience,
CONVERT(SUBSTRING_INDEX(experience,'-',1),UNSIGNED INTEGER) AS num
FROM employee
) xDerived
where num>=7;
Resultater
+----+------------+------+
| id | experience | num |
+----+------------+------+
| 2 | 7-1 | 7 |
| 5 | 8-6 | 8 |
| 7 | 10-4 | 10 |
+----+------------+------+
Bemærk, dit @num
konceptet var defekt, men forhåbentlig tolkede jeg, hvad du mente at gøre ovenfor.
Jeg gik også med 7 ikke 3, fordi alle dine prøvedata ville være returneret, og jeg ville gerne vise dig, at det ville fungere.