복붙노트

[SQL] SQL LIKE 조건의 정수를 확인하기 위해?

SQL

SQL LIKE 조건의 정수를 확인하기 위해?

나는 알파벳을 통해 이동하고 적절한 문자, 예를 들어,로 시작하는 모든 항목을 나열 SQL LIKE 조건 세트를 사용하고 있습니다 모든 책을 구할 수있는 곳은 문자 "A"로 제목 시작 :

SELECT * FROM books WHERE title ILIKE "A%"

그 편지에 대한 괜찮지 만 어떻게 숫자로 시작하는 모든 항목을 나열합니까? 그것은 가치가 무엇인지를 들어 이것은 포스트 그레스 DB에 있습니다.

해결법

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

    1.즉, 제목이 숫자로 시작했다 모든 책 (정규식에 의해)를 선택합니다, 당신이 원하는 것이 무엇입니까?

    즉, 제목이 숫자로 시작했다 모든 책 (정규식에 의해)를 선택합니다, 당신이 원하는 것이 무엇입니까?

    SELECT * FROM books WHERE title ~ '^[0-9]'
    

    특정 숫자로 시작하는 정수를 원한다면, 당신은 사용할 수 있습니다 :

    SELECT * FROM books WHERE CAST(price AS TEXT) LIKE '123%'
    

    또는 () 다음의 모든 숫자의 자릿수가 같은 경우 (제약 조건이 유용 할 것이다)를 사용

    SELECT * FROM books WHERE price BETWEEN 123000 AND 123999;
    
  2. ==============================

    2.PostgreSQL는 정규 표현식 매칭을 지원합니다.

    PostgreSQL는 정규 표현식 매칭을 지원합니다.

    따라서, 귀하의 예제처럼 보일 것이다

    SELECT * FROM books WHERE title ~ '^\d+ ?' 
    

    이것은 하나 이상의 숫자와 선택적인 공간로 시작하는 제목과 일치합니다

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

    3.당신이 문자열로 검색 할 경우,이 같은 텍스트로 캐스트 할 수 있습니다 :

    당신이 문자열로 검색 할 경우,이 같은 텍스트로 캐스트 할 수 있습니다 :

    SELECT * FROM books WHERE price::TEXT LIKE '123%'
    
  4. ==============================

    4.여기 파티에 늦었어요,하지만 만약 당신이 단지 비교를 정수 할 수있는 고정 된 길이의 정수 나왔습니다 거래 :

    여기 파티에 늦었어요,하지만 만약 당신이 단지 비교를 정수 할 수있는 고정 된 길이의 정수 나왔습니다 거래 :

    SELECT * FROM books WHERE price > 89999 AND price < 90100;
    
  5. ==============================

    5.PostgreSQL의 9.5에서 테스트 :

    PostgreSQL의 9.5에서 테스트 :

    - 숫자 만

    select * from books where title ~ '^[0-9]*$';
    

    또는,

    select * from books where title SIMILAR TO '[0-9]*';
    

    - 숫자로 시작

    select * from books where title ~ '^[0-9]+';
    
  6. ==============================

    6.당신은 아마 뭔가처럼 오히려 "7로 시작하는 문자열"보다 "7로 시작하는 번호"를 찾고 있다고 가정

    당신은 아마 뭔가처럼 오히려 "7로 시작하는 문자열"보다 "7로 시작하는 번호"를 찾고 있다고 가정

    select * from books where convert(char(32), book_id) like '7%'
    

    또는 변환의 포스트 그레스 상당 무엇이든.

  7. ==============================

    7.그 중 어느 하나를 색인입니까?

    그 중 어느 하나를 색인입니까?

    이것은 확실히 BTREE 색인을 생성 할 수 있습니다 :

    WHERE title >= '0' AND title < ':'
    

    하는 것으로는 ':'ASCII에서 '9'후 제공됩니다.

  8. ==============================

    8.PostgreSQL의에서는 유사한 TO 연산자를 (더)를 사용할 수 있습니다 :

    PostgreSQL의에서는 유사한 TO 연산자를 (더)를 사용할 수 있습니다 :

    -- only digits
    select * from books where title similar to '^[0-9]*$';
    -- start with digit
    select * from books where title similar to '^[0-9]%$';
    
  9. from https://stackoverflow.com/questions/1684291/sql-like-condition-to-check-for-integer by cc-by-sa and MIT license