2015-01-23 2 views
0

나는 mystring varchar(255) 열을 가진 MySQL 데이터베이스를 가지고 있습니다.mysql : 문자열의 대문자 발생 횟수를 계산합니다.

내가 알고 싶은 것은 표준 라틴 대문자 ('A'에서 'Z')까지입니다.

SELECT count_characters(mystring, 'A', 'Z') FROM mytable; 

:

그래서 예를 들어 "ABCDEF"countains 문자 upperscase 3은 "XYZZ는"4

은 기본적으로 내가의 형태로 데이터베이스에 어떤 값을 계산하고 싶습니다 포함 MySQL에서도 가능합니까?

+1

짧은 대답 : 아니요. 제안 : mySQL의 문자열을 원하는 언어로 쿼리 한 다음 해당 언어의 대문자를 셉니다. – FoggyDay

답변

1

이 결과는 MySQL에서 반환 될 수 있습니다. 불가능하지는 않지만 완전히 추한 것입니다. 이것을 더 예쁘게하려면 사용자 정의 함수에서 추악함을 숨길 필요가 있습니다.

REPLACE 함수를 사용하여 특정 문자를 길이가 0 인 문자열로 바꾸려면 대/소문자를 검색하십시오. 셀 수있는 특정 문자를 반복합니다. 그런 다음 결과 문자열의 문자 길이를 가져 와서 원래 문자열의 문자 길이에서 뺍니다. 차이점은 대체 된 문자 수 (계산할 문자 수)입니다. 예를 들어

SELECT CHAR_LENGTH(t.mycol) - 
     CHAR_LENGTH(
      REPLACE(
      REPLACE(
      REPLACE(
      REPLACE(
       t.mycol 
      ,'A','') 
      ,'B','') 
      ,'C','') 
      ,'D','') 
     ) AS count_characters 
    FROM mytable t 

그것은 추한 ... 테이블의 각 행에 대해, 특정 열에서 'D'을 통해 대문자 'A'의 수를 얻을 수 있지만, 그것은 것입니다 지정된 결과를 리턴하십시오.

참고 : LENGTH 함수는 라틴 문자 'A'에서 'Z'까지 사용할 수 있지만 멀티 바이트 UTF 인코딩을 처리하기 위해 CHAR_LENGTH 함수를 사용합니다.

관련 문제