[SQL] PostgreSQL의 문자열 내에서 문자열의 발생 수를 계산
SQLPostgreSQL의 문자열 내에서 문자열의 발생 수를 계산
어떻게 PostgreSQL의 문자열 내에서 문자열의 발생 수를 계산 할 수 있습니까?
예:
나는 테이블이
CREATE TABLE test."user"
(
uid integer NOT NULL,
name text,
result integer,
CONSTRAINT pkey PRIMARY KEY (uid)
)
결과는 열 이름은 문자열의 많은 발생을 포함 O를 어떻게 열을 포함하도록 내가 쿼리를 작성합니다. 한 행에 이름 안녕하세요 세계 경우 문자열 안녕하세요 세계에서 두 O 있기 때문에 예를 들어, 열 결과는이 포함되어야합니다.
즉, 내가 입력으로 걸릴 쿼리를 작성하려고 해요 :
그 결과 열을 업데이트 :
나는 함수 regexp_matches 및 전체 (g = 글로벌) 문자열은 문자열의 모든 발생)의 존재를 스캔 할 필요가 있음을 나타냅니다의 g 옵션을 알고있다.
예:
SELECT * FROM regexp_matches('hello world', 'o', 'g');
보고
{o}
{o}
과
SELECT COUNT(*) FROM regexp_matches('hello world', 'o', 'g');
보고
2
그러나 나는 열 이름에 포함 된 O를가 문자열의 얼마나 많은 항목을 포함 할 것이라고 방식으로 결과 열을 업데이트 할 업데이트 쿼리를 작성하는 방법을 볼 수 없습니다.
해결법
-
==============================
1.일반적인 솔루션은이 논리를 기반으로 : 빈 문자열로 검색 문자열을 교체하고 검색 문자열의 길이에 의해 이전 및 새 길이의 차이를 분할
일반적인 솔루션은이 논리를 기반으로 : 빈 문자열로 검색 문자열을 교체하고 검색 문자열의 길이에 의해 이전 및 새 길이의 차이를 분할
(CHAR_LENGTH(name) - CHAR_LENGTH(REPLACE(name, 'substring', ''))) / CHAR_LENGTH('substring')
그 후:
UPDATE test."user" SET result = (CHAR_LENGTH(name) - CHAR_LENGTH(REPLACE(name, 'o', ''))) / CHAR_LENGTH('o');
-
==============================
2.배열이 변환을 수행 문자열의 Postgres'y 방법 및 어레이의 길이를 계산 (다음 1 감산)
배열이 변환을 수행 문자열의 Postgres'y 방법 및 어레이의 길이를 계산 (다음 1 감산)
select array_length(string_to_array(name, 'o'), 1) - 1
참고이 아니라 긴 문자열로 작동합니다.
그 후:
update test."user" set result = array_length(string_to_array(name, 'o'), 1) - 1;
-
==============================
3.다른 방법 :
다른 방법 :
UPDATE test."user" SET result = length(regexp_replace(name, '[^o]', '', 'g'));
-
==============================
4.반환, 문자의 개수
반환, 문자의 개수
SELECT (LENGTH('1.1.1.1') - LENGTH(REPLACE('1.1.1.1','.',''))) AS count --RETURN COUNT OF CHARACTER '.'
-
==============================
5.
Occcurence_Count = LENGTH(REPLACE(string_to_search,string_to_find,'~'))-LENGTH(REPLACE(string_to_search,string_to_find,''))
이 솔루션은 특히 더 제수와 함께, 내가 본 많은보다 약간 청소기입니다. 당신은 선택 내에서 기능이나 사용이 점을 설정할 수 있습니다. 어떤 변수가 필요하지 않습니다. 나는 대체 문자로 물결표를 사용하지만 데이터 세트에없는 모든 문자가 작동합니다.
from https://stackoverflow.com/questions/36376410/counting-the-number-of-occurrences-of-a-substring-within-a-string-in-postgresql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 내가 상용 응용 프로그램에서 무료로 SQL Server Express를 사용할 수 [마감] (0) | 2020.06.10 |
---|---|
[SQL] PostgreSQL의 경우 카운트 조건 (0) | 2020.06.10 |
[SQL] 어떻게 .NET 응용 프로그램에서 SQL 서버 시간 데이터 유형을 사용 하는가? (0) | 2020.06.10 |
[SQL] 최대 절전 모드 문제 : 외래 키 컬럼의 수가 같아야 기본 키를 참조로 (0) | 2020.06.10 |
[SQL] SQL Server 데이터베이스에서 DataTable을 채우기 (0) | 2020.06.10 |