[sql] SQL 열에서 문자 인스턴스를 계산하는 방법

100 개의 ‘Y’또는 ‘N’자 문자열 인 SQL 열이 있습니다. 예를 들면 :

YYNYNYYNNNYYNY …

각 행의 모든 ​​’Y’기호 수를 얻는 가장 쉬운 방법은 무엇입니까?



답변

SQL Server에서 :

SELECT LEN(REPLACE(myColumn, 'N', ''))
FROM ...


답변

이 스 니펫은 부울이있는 특정 상황에서 작동합니다. “비 N이 몇 개입니까?”라고 대답합니다.

SELECT LEN(REPLACE(col, 'N', ''))

다른 상황에서 실제로 주어진 문자열에서 특정 문자 (예 : ‘Y’)의 발생 횟수를 계산하려는 경우 다음을 사용하십시오.

SELECT LEN(col) - LEN(REPLACE(col, 'Y', ''))


답변

이것은 매번 정확한 결과를주었습니다 …

이것은 내 줄무늬 필드에 있습니다 …

노란색, 노란색, 노란색, 노란색, 노란색, 노란색, 검은 색, 노란색, 노란색, 빨간색, 노란색, 노란색, 노란색, 검은 색

  • 11 노란색
  • 2 검정
  • 1 빨간색
SELECT (LEN(Stripes) - LEN(REPLACE(Stripes, 'Red', ''))) / LEN('Red')
  FROM t_Contacts


답변

DECLARE @StringToFind VARCHAR(100) = "Text To Count"

SELECT (LEN([Field To Search]) - LEN(REPLACE([Field To Search],@StringToFind,'')))/COALESCE(NULLIF(LEN(@StringToFind), 0), 1) --protect division from zero
FROM [Table To Search]


답변

아마 이런 …

SELECT
    LEN(REPLACE(ColumnName, 'N', '')) as NumberOfYs
FROM
    SomeTable


답변

가장 쉬운 방법은 Oracle 기능을 사용하는 것입니다.

SELECT REGEXP_COUNT(COLUMN_NAME,'CONDITION') FROM TABLE_NAME


답변

이것은 N의 발생 횟수를 반환합니다.

select ColumnName, LEN(ColumnName)- LEN(REPLACE(ColumnName, 'N', ''))
from Table