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

MYSQL vybere kus řetězce a seřadí podle tohoto kusu

Navrhoval bych, abyste se podívali na Funkce řetězce MySQL a konkrétněji SUBSTRING_INDEX funkce. Důvod, proč navrhuji toto přes SUBSTRING je to proto, že číslo před nebo za lomítkem může být více než jedno číslo, což by způsobilo, že by se délka první a/nebo druhé části lišila.

Příklad:

SELECT   `info`,
         SUBSTRING_INDEX(`info`, '/', 1) AS `first_part`,
         SUBSTRING_INDEX(`info`, '/', -1) AS `second_part`
FROM     `table`
ORDER BY `first_part` ASC,
         `second_part` ASC;

Výsledek:

Další příklad

V tomto příkladu používám CAST převést druhou část na celé číslo bez znaménka v případě, že obsahuje další znaky, jako jsou symboly nebo písmena. Jinými slovy, druhá část "web-4/15." by bylo "15" a druhá část "web-4/15****" by byla také "15".

SELECT   `info`,
          SUBSTRING_INDEX(`info`, '/', 1) AS `first_part`,
          CAST(SUBSTRING_INDEX(`info`, '/', -1) AS UNSIGNED) `second_part`
FROM     `table`
ORDER BY `first_part` ASC,
         `second_part` ASC;


  1. Sloupec 'user_id' v seznamu polí je nejednoznačný

  2. Jaká je délka řetězce id relace PHP?

  3. Při prvním spuštění nelze načíst databázi sqlite

  4. PostgreSQL 9.3:Dynamická kontingenční tabulka