복붙노트

[SQL] 문자열 열이 절 사이에 SQL

SQL

문자열 열이 절 사이에 SQL

난 문자열 컬럼을 통해 절 "사이에"사용하여 검색을 만들고 싶어. 나는이있어 몇 가지 테스트를 수행 :

의는 varchar 형의 "이름"열이 국가 테이블이 있다고 가정 해 봅시다. 나는이 쿼리를 실행하면 :

Select * from country where name between 'a' and 'b'

나는이 결과를 가지고 :

Argentina
.
.
.
Argelia.

내가 조금 발견 B로 시작하는 이상한 비트 것을 이들 국가를 제외합니다.

더 정확한 방법이 검색을 할 수있는 방법이 있나요? 다른이 검색을위한 아이디어?

미리 감사드립니다

해결법

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

    1.표현식

    표현식

    name between 'A' and 'B'
    

    동등

    name>='A' and name<='B'
    

    그래서 '아르헨티나'> = 'A'및 <= 'B'과 만족하는 조건이다. 그러나 '볼리비아'<= 'B'가 아닙니다. '볼리비아'> 'B'. 그것은 단지 첫 글자에 보이지 않는 : 그것은 전체 문자열을 살펴 봅니다. 가되어야한다 방법은 확실히 어느 : 그것은이 작업을 수행하지 않은 경우, 당신은 '스미스'가 아니라 '스미 더스'를 포함 범위를 원한다고 말할 수있는 방법은 없을 것입니다.

    당신이 원하는 것을 달성하기 위해, 당신은 말할 수 :

    substr(name,1,1) between 'A' and 'B'
    

    또는:

    name like 'A%' or name like 'B%'
    

    또는:

    name>='A' and name<'C'
    
  2. ==============================

    2.나는 당신의 문제를 해결하는 방법을 알고 생각합니다. u는이 같은 뒤쪽에 추가 문자를 추가하는 시도 할 수 있습니다

    나는 당신의 문제를 해결하는 방법을 알고 생각합니다. u는이 같은 뒤쪽에 추가 문자를 추가하는 시도 할 수 있습니다

    select * from tablea where column1 between 'ABC' and 'ACD'+'Z'
    

    이 ABC의 %에서 ACE에 결과를 반환합니다

  3. ==============================

    3.나뿐만 아니라 시작 개국을 얻을 것입니다 또 다른 쿼리는 다음과 같습니다

    나뿐만 아니라 시작 개국을 얻을 것입니다 또 다른 쿼리는 다음과 같습니다

    Select * from country where name between 'a' and 'c'
    
  4. ==============================

    4.결과는 정확하지만 오해 할 수있다. X x> = A 및 X <= B A와 B 수단. (자세한 내용은 POSTGRES 설명서를 참조하십시오.)

    결과는 정확하지만 오해 할 수있다. X x> = A 및 X <= B A와 B 수단. (자세한 내용은 POSTGRES 설명서를 참조하십시오.)

    당신이하는 A 또는 B 중 하나를 시작 줄을 얻고 싶은 경우에, 당신이 무슨 뜻인지 말 :

    select * from country where name like 'a%' or name like 'b%'
    

    당신이 사용하는 전체 성능을 얻을 것이다, 그래서 같은 테이블 인덱스를 사용합니다.

  5. ==============================

    5.

    Select * from country where substring(name FROM 1 FOR 1) between 'A' and 'B';
    
  6. ==============================

    6.이 문은 작동하지 않았다 이유는 비교 문자열과 같은 길이가 될 때까지 SQL은 공백을 문자열을 채 웁니다입니다. 따라서, 비교, SQL에 비해 B는 ****** B 여러 공백 하였다. 다른 모든 문자, SQL 결정 B ***** 전에 공백의 나타난다는 B 후 [6 공백] 온 때문이다. 그래서 표시 할 수 없습니다.

    이 문은 작동하지 않았다 이유는 비교 문자열과 같은 길이가 될 때까지 SQL은 공백을 문자열을 채 웁니다입니다. 따라서, 비교, SQL에 비해 B는 ****** B 여러 공백 하였다. 다른 모든 문자, SQL 결정 B ***** 전에 공백의 나타난다는 B 후 [6 공백] 온 때문이다. 그래서 표시 할 수 없습니다.

  7. from https://stackoverflow.com/questions/5980783/sql-between-clause-with-strings-columns by cc-by-sa and MIT license