sql >> Databáze >  >> RDS >> Mysql

Klauzule IN proměnné MYSQL

Budete se chtít podívat na find_in_set() funkce:

SELECT
    *
FROM
    your_table
WHERE
    NOT FIND_IN_SET(User.user_name, @valid_users);

Aby to fungovalo, seznam oddělený čárkami by neměl obsahovat uvozovky (pokud vaše uživatelská jména skutečně neobsahují uvozovky) a neměl by být doplněn mezerami:

SET @valid_users := 'admin,jrock,kmicka,First Last';

Příklad SqlFiddle

Chcete-li přímo odpovědět na vaši otázku týkající se „proč by proměnná v NOT IN filtr funguje“, je to proto, že @valid_users se zachází jako s řetězcem a když jej předáte do IN() , je s ním zacházeno jako s jedním řetězcem (tj. ne jako sada/seznam). Pomocí FIND_IN_SET() , zpracovává řetězec v @valid_users jako čárkami oddělenou sadu/seznam a podle toho ji používá.




  1. Jak převést CLOB na BLOB v Oracle?

  2. Rails:Volání .limit(5) změní pořadí výsledků

  3. Kontrola stavu Oracle

  4. MySQL vyhledávání necitlivé na diakritiku (arabština)