정수를 확인하는 SQL LIKE 조건?
저는 SQL LIKE 조건 세트를 사용하여 알파벳을 살펴보고 적절한 문자로 시작하는 모든 항목을 나열합니다. 예를 들어 제목이 "A"로 시작하는 모든 책을 가져옵니다.
SELECT * FROM books WHERE title ILIKE "A%"
문자는 괜찮지 만 숫자로 시작하는 모든 항목을 나열하려면 어떻게해야합니까? 이것이 가치있는 것은 Postgres DB에 있습니다.
그러면 제목이 숫자로 시작하는 모든 책이 (정규식에 의해) 선택됩니다.
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;
PostgreSQL은 지원하는 정규 표현식 매칭을 .
따라서 귀하의 예는 다음과 같습니다.
SELECT * FROM books WHERE title ~ '^\d+ ?'
하나 이상의 숫자 및 선택적 공백으로 시작하는 제목과 일치합니다.
문자열로 검색하려면 다음과 같은 텍스트로 변환 할 수 있습니다.
SELECT * FROM books WHERE price::TEXT LIKE '123%'
"7로 시작하는 문자열"이 아닌 "7로 시작하는 숫자"를 찾는다고 가정하면
select * from books where convert(char(32), book_id) like '7%'
또는 변환에 해당하는 Postgres가 무엇이든간에.
나는 여기 파티에 늦었지만 고정 길이의 정수를 다루는 경우 정수 비교를 할 수 있습니다.
SELECT * FROM books WHERE price > 89999 AND price < 90100;
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]+';
그중 어느 것이 색인 생성이 가능합니까?
이것은 확실히 btree-indexable입니다.
WHERE title >= '0' AND title < ':'
ASCII에서 ':'는 '9'뒤에옵니다.
PostreSQL에서는 SIMILAR TO 연산자 ( more )를 사용할 수 있습니다 .
-- only digits
select * from books where title similar to '^[0-9]*$';
-- start with digit
select * from books where title similar to '^[0-9]%$';
참고 URL : https://stackoverflow.com/questions/1684291/sql-like-condition-to-check-for-integer
'Programing' 카테고리의 다른 글
ServerCertificateValidationCallback을 설정 했는데도 SSL / TLS 보안 채널을 만들 수 없습니다. (0) | 2020.11.30 |
---|---|
다트에서 이중 점 (.) 사용을 나열 하시겠습니까? (0) | 2020.11.30 |
문자열에서 모든 특수 문자를 제거하는 정규식? (0) | 2020.11.30 |
wp_nav_menu 하위 메뉴 클래스 이름을 변경 하시겠습니까? (0) | 2020.11.30 |
Ruby에서 각각과 collect 메소드의 차이점 (0) | 2020.11.30 |