복붙노트

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

SQL

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

나는 100의 캐릭터 'Y'또는 'N'문자 인 SQL 열 수 있습니다. 예를 들면 :

무엇 각 행의 모든 ​​'Y'문자의 수를 얻을 수있는 가장 쉬운 방법입니다.

해결법

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

    1.SQL 서버의 경우 :

    SQL 서버의 경우 :

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

    2.이 조각은 당신이 부울이 특정 상황에서 작동 : 그것은 응답 "비를 Ns가를 얼마나 많은?".

    이 조각은 당신이 부울이 특정 상황에서 작동 : 그것은 응답 "비를 Ns가를 얼마나 많은?".

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

    다른 상황에서, 당신이 실제로 어떤 주어진 문자열에서 특정 문자 (예 : 'Y')의 발생을 계산하려고한다면, 이것을 사용 :

    SELECT LEN(col) - LEN(REPLACE(col, 'Y', ''))
    
  3. ==============================

    3.이 날 때마다 정확한 결과를 준 ...

    이 날 때마다 정확한 결과를 준 ...

    이것은 나의 줄무늬 필드에 ...

    노랑, 노랑, 노랑, 노랑, 노랑, 노랑, 검정, 노랑, 노랑, 빨강, 노랑, 노랑, 노랑, 검정

    SELECT (LEN(Stripes) - LEN(REPLACE(Stripes, 'Red', ''))) / LEN('Red') 
      FROM t_Contacts
    
  4. ==============================

    4.

    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]
    
  5. ==============================

    5.어쩌면이 같은 ...

    어쩌면이 같은 ...

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

    6.가장 쉬운 방법은 오라클 기능을 사용하는 것입니다 :

    가장 쉬운 방법은 오라클 기능을 사용하는 것입니다 :

    SELECT REGEXP_COUNT(COLUMN_NAME,'CONDITION') FROM TABLE_NAME
    
  7. ==============================

    7.이 시도

    이 시도

    declare @v varchar(250) = 'test.a,1  ;hheuw-20;'
    -- LF   ;
    select len(replace(@v,';','11'))-len(@v)
    
  8. ==============================

    8.이 시도. 그것은 노를 결정합니다. 단일 문자 발생뿐만 아니라 주요 문자열의 하위 문자열 발생.

    이 시도. 그것은 노를 결정합니다. 단일 문자 발생뿐만 아니라 주요 문자열의 하위 문자열 발생.

    SELECT COUNT(DECODE(SUBSTR(UPPER(:main_string),rownum,LENGTH(:search_char)),UPPER(:search_char),1)) search_char_count
    FROM DUAL
    connect by rownum <= length(:main_string);
    
  9. ==============================

    9.당신은 하나의 문자보다 더와 문자열의 인스턴스의 수를 계산하려면, 당신도 정규식 이전 솔루션을 사용하거나이 솔루션은 내가 또한 호환성이 필요합니다 SQL 서버 2016에 도입 된 믿고 STRING_SPLIT를 사용 레벨 (130) 이상이다.

    당신은 하나의 문자보다 더와 문자열의 인스턴스의 수를 계산하려면, 당신도 정규식 이전 솔루션을 사용하거나이 솔루션은 내가 또한 호환성이 필요합니다 SQL 서버 2016에 도입 된 믿고 STRING_SPLIT를 사용 레벨 (130) 이상이다.

    ALTER DATABASE [database_name] SET COMPATIBILITY_LEVEL = 130
    

    .

    --some data
    DECLARE @table TABLE (col varchar(500))
    INSERT INTO @table SELECT 'whaCHAR(10)teverCHAR(10)whateverCHAR(10)'
    INSERT INTO @table SELECT 'whaCHAR(10)teverwhateverCHAR(10)'
    INSERT INTO @table SELECT 'whaCHAR(10)teverCHAR(10)whateverCHAR(10)~'
    
    --string to find
    DECLARE @string varchar(100) = 'CHAR(10)'
    
    --select
    SELECT 
        col
      , (SELECT COUNT(*) - 1 FROM STRING_SPLIT (REPLACE(REPLACE(col, '~', ''), 'CHAR(10)', '~'), '~')) AS 'NumberOfBreaks'
    FROM @table
    
  10. ==============================

    10.nickf에서 제공하는 두 번째 대답은 매우 영리하다. 그러나, 단지 1 개 무시 공간의 대상 서브 스트링의 글자에 대해 작동한다. 특히, 오른쪽 측면에있는 모든 문자를 제거 할 때 SQL이 유용하게 (내가 이것을 몰랐) 제거 내 데이터에 두 개의 선행 공백이 있었다. 어떤 것을 의미

    nickf에서 제공하는 두 번째 대답은 매우 영리하다. 그러나, 단지 1 개 무시 공간의 대상 서브 스트링의 글자에 대해 작동한다. 특히, 오른쪽 측면에있는 모든 문자를 제거 할 때 SQL이 유용하게 (내가 이것을 몰랐) 제거 내 데이터에 두 개의 선행 공백이 있었다. 어떤 것을 의미

    " 존 스미스"

    반면 Nickf의 방법을 사용하여 생성 된 12 :

    "조 Bloggs에, 존 스미스"

    열 발생 및

    "조 Bloggs에, 존 스미스, 존 스미스"

    (20)를 생성.

    그러므로 나는 나를 위해 작동 다음, 약간 솔루션을 수정했습니다 :

    Select (len(replace(Sales_Reps,' ',''))- len(replace((replace(Sales_Reps, ' ','')),'JohnSmith','')))/9 as Count_JS
    

    나는 누군가가 그 일을 더 나은 방법을 생각할 수 있습니다 확신합니다!

  11. ==============================

    11.또한이 시도 할 수 있습니다

    또한이 시도 할 수 있습니다

    -- DECLARE field because your table type may be text
    DECLARE @mmRxClaim nvarchar(MAX) 
    
    -- Getting Value from table
    SELECT top (1) @mmRxClaim = mRxClaim FROM RxClaim WHERE rxclaimid_PK =362
    
    -- Main String Value
    SELECT @mmRxClaim AS MainStringValue
    
    -- Count Multiple Character for this number of space will be number of character
    SELECT LEN(@mmRxClaim) - LEN(REPLACE(@mmRxClaim, 'GS', ' ')) AS CountMultipleCharacter
    
    -- Count Single Character for this number of space will be one
    SELECT LEN(@mmRxClaim) - LEN(REPLACE(@mmRxClaim, 'G', '')) AS CountSingleCharacter
    

    산출:

  12. ==============================

    12.솔루션의 도움 아래의 제한이있는 문자열에서 문자의 존재의 어떤 알 수 없습니다 :

    솔루션의 도움 아래의 제한이있는 문자열에서 문자의 존재의 어떤 알 수 없습니다 :

    2) 정확한 출력 용액 아래로보십시오

    -- ================================================
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:      VIKRAM JAIN
    -- Create date: 20 MARCH 2019
    -- Description: Count char from string
    -- =============================================
    create FUNCTION vj_count_char_from_string
    (
        @string nvarchar(500),
        @find_char char(1)  
    )
    RETURNS integer
    AS
    BEGIN
        -- Declare the return variable here
        DECLARE @total_char int; DECLARE @position INT;
        SET @total_char=0; set @position = 1;
    
        -- Add the T-SQL statements to compute the return value here
        if LEN(@string)>0
        BEGIN
            WHILE @position <= LEN(@string) -1
            BEGIN
                if SUBSTRING(@string, @position, 1) = @find_char
                BEGIN
                    SET @total_char+= 1;
                END
                SET @position+= 1;
            END
        END;
    
        -- Return the result of the function
        RETURN @total_char;
    
    END
    GO
    
  13. ==============================

    13.당신은 문자의 더 다음 2가지와 문자열의 문자를 계산해야하는 경우, 대신 'N'으로 사용할 수 있습니다 - 문자의 일부 운영자 또는 정규식 당신이 필요로하는 문자를 받아들입니다.

    당신은 문자의 더 다음 2가지와 문자열의 문자를 계산해야하는 경우, 대신 'N'으로 사용할 수 있습니다 - 문자의 일부 운영자 또는 정규식 당신이 필요로하는 문자를 받아들입니다.

    SELECT LEN(REPLACE(col, 'N', ''))
    
  14. ==============================

    14.이 N의 발생 수를 반환

    이 N의 발생 수를 반환

    열 이름을 선택, LEN (COLUMN_NAME은) - LEN은 ((열 이름, 'IN'을, '') REPLACE) 표에서

  15. ==============================

    15.여기에 누군가가 올바른 형식의 전화 번호를 통과했다 있는지 확인하기 위해 오라클 SQL에서 사용되는 내용은 다음과 같습니다

    여기에 누군가가 올바른 형식의 전화 번호를 통과했다 있는지 확인하기 위해 오라클 SQL에서 사용되는 내용은 다음과 같습니다

    WHERE REPLACE(TRANSLATE('555-555-1212','0123456789-','00000000000'),'0','') IS NULL AND
    LENGTH(REPLACE(TRANSLATE('555-555-1212','0123456789','0000000000'),'0','')) = 2
    

    전화 번호의 전화 번호가 두 하이픈을 가지고 있는지 숫자와 하이픈과 두번째 부분 검사를 가지면 제 1 부분 확인합니다.

  16. ==============================

    16.렌 (이름)를 선택 - 렌 ((이름을 대체, 'A', '')) TESTING에서

    렌 (이름)를 선택 - 렌 ((이름을 대체, 'A', '')) TESTING에서

    '- 만 ((대체 전용 ( "YYNYNYYNNNYYNY를)'를 선택 YYNYNYYNNNYYNY ','y '를,' '))

  17. from https://stackoverflow.com/questions/1860457/how-to-count-instances-of-character-in-sql-column by cc-by-sa and MIT license