[SQL] 이름이 모음으로 시작하고 끝나는 경우 SQL 쿼리 확인
SQL이름이 모음으로 시작하고 끝나는 경우 SQL 쿼리 확인
둘 다 자신의 첫 번째와 마지막 문자로 모음이 테이블 역에서 도시 이름 (아이디, 도시, 경도, 위도)의 목록을 조회 할. 결과는 중복을 포함 할 수 없습니다.
이것이 들어 내가 좋아하는 쿼리를 작성 WHERE NAME LIKE (25)의 조건이 있었다 '는 %'매우 다루기 각각이 서로 다른 모음, 각 모음. 그것을 할 수있는 더 좋은 방법이 있나요?
해결법
-
==============================
1.당신은 정규 표현식을 사용할 수 있습니다 :
당신은 정규 표현식을 사용할 수 있습니다 :
SELECT DISTINCT city FROM station WHERE city RLIKE '^[aeiouAEIOU].*[aeiouAEIOU]$'
-
==============================
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.정규 표현식을 사용합니다.
정규 표현식을 사용합니다.
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.당신은 MySQL을위한 간단한 솔루션을 시도 할 수 있습니다 :
당신은 MySQL을위한 간단한 솔루션을 시도 할 수 있습니다 :
SELECT DISTINCT city FROM station WHERE city REGEXP "^[aeiou].*";
-
==============================
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.이 작업을 시도 할 수 있습니다
이 작업을 시도 할 수 있습니다
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.
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.아래 쿼리는 오라클 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.다음을 시도해보십시오
다음을 시도해보십시오
select distinct city from station where city like '%[aeuio]'and city like '[aeuio]%' Order by City;
-
==============================
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.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.MS 액세스 또는 MYSQL 서버의 경우
MS 액세스 또는 MYSQL 서버의 경우
SELECT city FROM station WHERE City LIKE '[aeiou]%'and City LIKE '%[aeiou]';
-
==============================
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.코드 아래의이 시도,
코드 아래의이 시도,
SELECT DISTINCT CITY FROM STATIOn WHERE city RLIKE '^[aeiouAEIOU].*.[aeiouAEIOU]$'
-
==============================
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.
SELECT DISTINCT city FROM station WHERE city RLIKE '^[^aeiouAEIOU]'OR city RLIKE'[^aeiouAEIOU]$'
-
==============================
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.모음으로 시작하는이 시도
모음으로 시작하는이 시도
신탁:
select distinct *field* from *tablename* where SUBSTR(*sort field*,1,1) IN('A','E','I','O','U') Order by *Sort Field*;
-
==============================
19.다음을 시도해보십시오
다음을 시도해보십시오
select distinct city from station where city REGEXP '^[aeiou]' and city REGEXP '[aeiou]$';
-
==============================
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.Oracle의 경우 :
Oracle의 경우 :
SELECT DISTINCT city FROM station WHERE REGEXP_LIKE(city, '^[aeiou].*[aeiou]$','i') ;
-
==============================
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.내 간단한 솔루션 :::
내 간단한 솔루션 :::
SELECT DISTINCT CITY
역에서
WHERE 시티 LIKE '[A, E, I, O, U] % [A, E, I, O, U];
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
'SQL' 카테고리의 다른 글
[SQL] MySQL은 - 하나 개의 컬럼은 DISTINCT되는 경우 모든 열을 SELECT (0) | 2020.05.20 |
---|---|
[SQL] C # 데이터 연결 모범 사례? (0) | 2020.05.20 |
[SQL] 열 인덱스 대 복합 VS MySQL의 커버링 (0) | 2020.05.20 |
[SQL] SQL - 전화는 각 레코드에 대해 저장 프로 시저 (0) | 2020.05.20 |
[SQL] 타임 스탬프에서 폐기 밀리 초 부분 (0) | 2020.05.20 |