sql >> Databáze >  >> RDS >> Oracle

výstup, který má první a poslední písmeno jako samohlásku (a,e,i,o,u)

Za předpokladu, že všechny názvy měst jsou všechna malá písmena, můžete udělat něco takového:

select city
from   station
where  substr(city,  1, 1) in ('a', 'e', 'i', 'o', 'u')
  and  substr(city, -1, 1) in ('a', 'e', 'i', 'o', 'u')

substr(city, 1, 1) přebírá podřetězec city počínaje pozicí 1 a délky 1 (tzn. pouze první písmeno). substr(city, -1, 1) je velmi podobný, jen pozice je jiná:-1 znamená první písmeno od konce řetězce – tím získáte poslední písmeno názvu města.

Pokud city může mít velká i malá písmena v WHERE klauzuli použijte lower(city) místo city .

UPRAVIT :Na základě populárního požadavku je zde uvedeno, jak lze totéž udělat s regulárními výrazy. Zde však nemá smysl používat regulární výraz; standardní řetězcové funkce (jako SUBSTR) jsou téměř jistě mnohem rychlejší než cokoli založené na regulárních výrazech.

....
where regexp_like(city, '^(a|e|i|o|u).*(a|e|i|o|u)$', 'i')

(a|e|i|o|u) znamená přesně jeden z těchto znaků. ^ znamená kotva na začátku řetězce a podobně $ na konci řetězce. Přísně vzato to vyžaduje, aby jméno města bylo dlouhé alespoň dvě písmena; pokud jsou možné jednopísmenné názvy měst, lze je snadno upravit. (Přístup SUBSTR by nevyžadoval žádné změny.)

Poslední argument, 'i' , nerozlišuje při porovnávání regulárních výrazů velká a malá písmena (jen pro případ, že je to potřeba).




  1. MySQL:Získejte maximální hodnoty skupin

  2. SQL Query pro převod výrazu cron do formátu data/času

  3. více dotazů MySQL na jeden insert

  4. Chyba MySQL 2006 (HY000) na řádku 406:Server MySQL zmizel