Oracle
 sql >> база данни >  >> RDS >> Oracle

изход, който има първа и последна буква като гласна (a,e,i,o,u)

Ако приемем, че всички имена на градове са малки букви, можете да направите нещо подобно:

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) взема подниза на city започвайки от позиция 1 и с дължина 1 (което означава, само първата буква). substr(city, -1, 1) е много подобен, само позицията е различна:-1 означава първа буква открай от низа - така че това ще ви даде последната буква от името на града.

Ако city може да има както главни, така и малки букви в WHERE клаузата използва lower(city) вместо city .

РЕДАКТИРАНЕ :По масово искане, ето как може да се направи същото с регулярни изрази. Тук обаче няма смисъл да се използва подход с регулярен израз; стандартните низови функции (като SUBSTR) са почти сигурни, че са много по-бързи от всичко, базирано на регулярни изрази.

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

(a|e|i|o|u) означава точно един от тези знаци. ^ означава закрепване в началото на низа и по подобен начин $ в края на низа. Строго погледнато, това изисква името на града да е дълго поне две букви; ако са възможни еднобуквени имена на градове, това може лесно да се промени. (Подходът SUBSTR не изисква промени.)

Последният аргумент, 'i' , прави съвпадението на regexp нечувствително към главни и малки букви (само в случай, че е необходимо).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете колона, която не е нула в изглед

  2. импортиране на дъмп файл в oracle 11gr2 получава грешки

  3. Разделете низ, разделен с точка и запетая с няколко колони, и създайте записи

  4. Как да редактирате съхранена процедура в Oracle SQL Developer?

  5. Потискане на passwd при извикване на sqlplus от shell скрипт