Ano, odvozená tabulka bude stačit. Vnitřní výběrový blok níže je odvozená tabulka. A každá odvozená tabulka potřebuje jméno. V mém případě xDerived
.
Strategií je nechat odvozenou tabulku očistit použití názvu sloupce. Z odvozeného bloku vychází čistý sloupec s názvem num
kterou lze volně použít pro vnější výběr.
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');
Dotaz
select id,experience,num
from
( SELECT id,experience,
CONVERT(SUBSTRING_INDEX(experience,'-',1),UNSIGNED INTEGER) AS num
FROM employee
) xDerived
where num>=7;
Výsledky
+----+------------+------+
| id | experience | num |
+----+------------+------+
| 2 | 7-1 | 7 |
| 5 | 8-6 | 8 |
| 7 | 10-4 | 10 |
+----+------------+------+
Všimněte si, vaše @num
koncept byl chybný, ale doufejme, že jsem výše pochopil, co jste chtěli udělat.
Také jsem použil 7, nikoli 3, protože by se vrátila všechna vaše ukázková data, a chtěl jsem vám ukázat, že to bude fungovat.