sql >> Database >  >> RDS >> Mysql

Hoe een door de gebruiker ingestelde variabele in MySQL te vergelijken?

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.



  1. Postgres - voeg twee kolommen samen tot één item

  2. Tekst zoeken en vervangen in MySQL-database met behulp van SQL

  3. Hoe REPLACE() werkt in MariaDB

  4. Vensterfuncties of algemene tabeluitdrukkingen:tel vorige rijen binnen bereik