복붙노트

[SQL] 이름이 모음으로 시작하고 끝나는 경우 SQL 쿼리 확인

SQL

이름이 모음으로 시작하고 끝나는 경우 SQL 쿼리 확인

둘 다 자신의 첫 번째와 마지막 문자로 모음이 테이블 역에서 도시 이름 (아이디, 도시, 경도, 위도)의 목록을 조회 할. 결과는 중복을 포함 할 수 없습니다.

이것이 들어 내가 좋아하는 쿼리를 작성 WHERE NAME LIKE (25)의 조건이 있었다 '는 %'매우 다루기 각각이 서로 다른 모음, 각 모음. 그것을 할 수있는 더 좋은 방법이 있나요?

해결법

  1. ==============================

    1.당신은 정규 표현식을 사용할 수 있습니다 :

    당신은 정규 표현식을 사용할 수 있습니다 :

    SELECT DISTINCT city
    FROM   station
    WHERE  city RLIKE '^[aeiouAEIOU].*[aeiouAEIOU]$'
    
  2. ==============================

    2.마이크로 소프트 SQL 서버에서 당신은 쿼리 아래에서이를 얻을 수 있습니다 :

    마이크로 소프트 SQL 서버에서 당신은 쿼리 아래에서이를 얻을 수 있습니다 :

    SELECT distinct City FROM STATION WHERE City LIKE '[AEIOU]%[AEIOU]'
    

    또는

    SELECT distinct City FROM STATION WHERE City LIKE '[A,E,I,O,U]%[A,E,I,O,U]'
    

    업데이트 --Added 오라클 쿼리

    SELECT DISTINCT CITY FROM STATION WHERE REGEXP_LIKE(LOWER(CITY), '^[aeiou]') and  REGEXP_LIKE(LOWER(CITY), '[aeiou]$');
    
    SELECT DISTINCT CITY FROM STATION WHERE REGEXP_LIKE(LOWER(CITY), '^[aeiou].*[aeiou]');
    
    SELECT DISTINCT CITY FROM STATION WHERE REGEXP_LIKE(CITY, '^[aeiou].*[aeiou]', 'i');
    
  3. ==============================

    3.정규 표현식을 사용합니다.

    정규 표현식을 사용합니다.

    WHERE name REGEXP '^[aeiou].*[aeiou]$'
    

    ^ 및 $ 앵커 값의 시작 부분과 끝 부분에 일치합니다.

    마찬가지로가, 전체 검사를 수행해야합니다, 그래서 내 테스트에서,이 이름 컬럼에 인덱스를 사용하지 않습니다

    WHERE name LIKE 'a%a' OR name LIKE 'a%e' ...
    

    나는 당신이 각 테스트 그 첫 글자 쿼리의 조합을 사용해야 할 것 인덱스를 사용하게 생각합니다.

    SELECT * FROM table
    WHERE name LIKE 'a%' AND name REGEXP '[aeiou]$'
    UNION
    SELECT * FROM table
    WHERE name LIKE 'e%' AND name REGEXP '[aeiou]$'
    UNION
    SELECT * FROM table
    WHERE name LIKE 'i%' AND name REGEXP '[aeiou]$'
    UNION
    SELECT * FROM table
    WHERE name LIKE 'o%' AND name REGEXP '[aeiou]$'
    UNION
    SELECT * FROM table
    WHERE name LIKE 'u%' AND name REGEXP '[aeiou]$'
    
  4. ==============================

    4.당신은 MySQL을위한 간단한 솔루션을 시도 할 수 있습니다 :

    당신은 MySQL을위한 간단한 솔루션을 시도 할 수 있습니다 :

    SELECT DISTINCT city FROM station WHERE city REGEXP "^[aeiou].*";
    
  5. ==============================

    5.당신은 첫 번째와 마지막 문자를 하위 문자열 및 IN 키워드와 비교 수

    당신은 첫 번째와 마지막 문자를 하위 문자열 및 IN 키워드와 비교 수

    WHERE SUBSTRING(NAME,1,1) IN (a,e,i,o,u) AND SUBSTRING(NAME,-1) IN (a,e,i,o,u) 
    
  6. ==============================

    6.이 작업을 시도 할 수 있습니다

    이 작업을 시도 할 수 있습니다

        select city
        from station where SUBSTRING(city,1,1) in ('A','E','I','O','U') and 
        SUBSTRING(city,-1,1) in ('A','E','I','O','U');
    
  7. ==============================

    7.

    SELECT distinct CITY 
    FROM STATION 
    where (CITY LIKE 'a%' 
        OR CITY LIKE 'e%' 
        OR CITY LIKE 'i%' 
        OR CITY LIKE 'o%'
        OR CITY LIKE 'u%'
    ) AND (CITY LIKE '%a' 
        OR CITY LIKE '%e'
        OR CITY LIKE '%i'
        OR CITY LIKE '%o'
        OR CITY LIKE '%u'
    )
    
  8. ==============================

    8.아래 쿼리는 오라클 DB를 위해 할 것입니다 :

    아래 쿼리는 오라클 DB를 위해 할 것입니다 :

    select distinct(city) from station where upper(substr(city, 1,1)) in ('A','E','I','O','U') and upper(substr(city, length(city),1)) in ('A','E','I','O','U');
    
  9. ==============================

    9.다음을 시도해보십시오

    다음을 시도해보십시오

    select distinct city 
    from station 
    where city like '%[aeuio]'and city like '[aeuio]%' Order by City;
    
  10. ==============================

    10.다음과 같은 정규 표현식을 사용하고 결과를 반전 할 수 있습니다 :

    다음과 같은 정규 표현식을 사용하고 결과를 반전 할 수 있습니다 :

    ^[^aeiou]|[^aeiou]$
    

    이렇게하면 입력 한 문자로 구성하는 경우에도 작동합니다. 이것은 다른 정규식 엔진에서 작동한다.

    MySQL의

    SELECT city
    FROM (
        SELECT 'xx' AS city UNION
        SELECT 'ax'         UNION
        SELECT 'xa'         UNION
        SELECT 'aa'         UNION
        SELECT 'x'          UNION
        SELECT 'a'
    ) AS station
    WHERE NOT city REGEXP '^[^aeiou]|[^aeiou]$'
    

    PostgreSQL의

    WHERE NOT city ~ '^[^aeiou]|[^aeiou]$'
    

    신탁

    WHERE NOT REGEXP_LIKE(city, '^[^aeiou]|[^aeiou]$')`
    

    SQL 서버

    어떤 정규 표현식을 지원하지 않습니다. 대괄호를 사용하여 LIKE 절 :

    WHERE city LIKE '[aeiou]%' AND city LIKE '%[aeiou]'
    
  11. ==============================

    11.MSSQL에서는이 방법이있을 수 있습니다 :

    MSSQL에서는이 방법이있을 수 있습니다 :

    select distinct city from station 
    where
    right(city,1) in ('a', 'e', 'i', 'o','u') and left(city,1) in ('a', 'e', 'i', 'o','u') 
    
  12. ==============================

    12.MS 액세스 또는 MYSQL 서버의 경우

    MS 액세스 또는 MYSQL 서버의 경우

    SELECT city FROM station
    WHERE City LIKE '[aeiou]%'and City LIKE '%[aeiou]';
    
  13. ==============================

    13.각 가능한 모든 경우를 확인하는 위치를이 같은 하드 코드를 할 수있는, 그것은 초보자를위한 이해하기 쉽게

    각 가능한 모든 경우를 확인하는 위치를이 같은 하드 코드를 할 수있는, 그것은 초보자를위한 이해하기 쉽게

    SELECT DISTINCT CITY 
    FROM STATION
    WHERE CITY LIKE 'A%A' OR CITY LIKE 'E%E' OR CITY LIKE 'I%I' OR CITY LIKE 'O%O' OR
    CITY LIKE 'U%U' OR CITY LIKE 'A%E' OR CITY LIKE 'A%I' OR CITY LIKE 'A%O' OR 
    CITY LIKE 'A%U' OR CITY LIKE 'E%A' OR CITY LIKE 'E%I' OR CITY LIKE 'E%O' OR 
    CITY LIKE 'E%U' OR CITY LIKE 'I%A' OR CITY LIKE 'I%E' OR CITY LIKE 'I%O' OR 
    CITY LIKE 'I%U' OR CITY LIKE 'O%A' OR CITY LIKE 'O%E' OR CITY LIKE 'O%I' OR 
    CITY LIKE 'O%U' OR CITY LIKE 'U%A' OR CITY LIKE 'U%E' OR CITY LIKE 'U%I' OR 
    CITY LIKE 'U%O'
    
  14. ==============================

    14.코드 아래의이 시도,

    코드 아래의이 시도,

    SELECT DISTINCT CITY
    FROM   STATIOn
    WHERE  city RLIKE '^[aeiouAEIOU].*.[aeiouAEIOU]$'
    
  15. ==============================

    15.마이크로 소프트 SQL Server의 작업 아래 문을 두

    마이크로 소프트 SQL Server의 작업 아래 문을 두

    SELECT DISTINCT
        city
    FROM
        station
    WHERE
        SUBSTRING(lower(CITY), 1, 1) IN ('a', 'e', 'i', 'o', 'u')
        AND SUBSTRING(lower(CITY), LEN(CITY), 1) IN ('a', 'e', 'i', 'o', 'u');
    
    SELECT DISTINCT
        City
    FROM
        Station
    WHERE
        City LIKE '[A, E, O, U, I]%[A, E, O, U, I]'
    ORDER BY
        City;
    
  16. ==============================

    16.

    SELECT DISTINCT city
    FROM   station
    WHERE  city RLIKE '^[^aeiouAEIOU]'OR city RLIKE'[^aeiouAEIOU]$'
    
  17. ==============================

    17.오라클의 경우 :

    오라클의 경우 :

    SELECT DISTINCT city 
    FROM station 
    WHERE SUBSTR(lower(CITY),1,1) IN ('a','e','i','o','u') AND SUBSTR(lower(CITY),-1) IN ('a','e','i','o','u');
    
  18. ==============================

    18.모음으로 시작하는이 시도

    모음으로 시작하는이 시도

    신탁:

    select distinct *field* from *tablename* where SUBSTR(*sort field*,1,1) IN('A','E','I','O','U') Order by *Sort Field*;
    
  19. ==============================

    19.다음을 시도해보십시오

    다음을 시도해보십시오

    select distinct city from station where city REGEXP '^[aeiou]' and city REGEXP '[aeiou]$';
    
  20. ==============================

    20.당신은 LEFT () 및 RIGHT () 기능을 사용할 수 있습니다. 왼쪽에서 왼쪽 (CITY, 1) CITY의 첫 번째 문자를 얻을 것이다. 오른쪽 (CITY는, 1) 오른쪽에서 CITY의 첫 번째 문자 (CITY의 마지막 문자)를 얻을 것이다.

    당신은 LEFT () 및 RIGHT () 기능을 사용할 수 있습니다. 왼쪽에서 왼쪽 (CITY, 1) CITY의 첫 번째 문자를 얻을 것이다. 오른쪽 (CITY는, 1) 오른쪽에서 CITY의 첫 번째 문자 (CITY의 마지막 문자)를 얻을 것이다.

    DISTINCT는 중복을 제거하는 데 사용됩니다. 비교 대소 문자를 구분하려면, 우리는 LOWER () 함수를 사용합니다.

    SELECT DISTINCT CITY
    FROM STATION
    WHERE LOWER(LEFT(CITY,1)) IN ('a', 'e', 'i', 'o', 'u') AND
          LOWER(RIGHT(CITY,1)) IN ('a', 'e', 'i', 'o', 'u')
    
  21. ==============================

    21.Oracle의 경우 :

    Oracle의 경우 :

    SELECT DISTINCT city
    FROM   station
    WHERE REGEXP_LIKE(city, '^[aeiou].*[aeiou]$','i') ;
    
  22. ==============================

    22.MySQL의에서 나를 위해 일 하나 아래 :

    MySQL의에서 나를 위해 일 하나 아래 :

    SELECT DISTINCT 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');
    
  23. ==============================

    23.내 간단한 솔루션 :::

    내 간단한 솔루션 :::

    SELECT DISTINCT CITY

    역에서

    WHERE 시티 LIKE '[A, E, I, O, U] % [A, E, I, O, U];

  24. from https://stackoverflow.com/questions/36627613/sql-query-to-check-if-a-name-begins-and-ends-with-a-vowel by cc-by-sa and MIT license