복붙노트

[SQL] 쉼표 데이터베이스 필드에 값을 구분

SQL

쉼표 데이터베이스 필드에 값을 구분

나는 제품의 테이블이 있습니다. 각 하나의 제품에 해당 테이블의 대응에 행은은 고유 ID로 식별합니다. 이제 각 제품은 해당 제품과 관련된 다수의 "코드"를 할 수 있습니다. 예를 들면 :

Id     |    Code
----------------------
0001   |   IN,ON,ME,OH
0002   |   ON,VI,AC,ZO
0003   |   QA,PS,OO,ME

난 할 노력하고있어 나는 "ON, ME"와 같은 코드를 전달할 수 있도록 저장 프로 시저를 생성하고이 "ON"또는 "ME"코드를 포함하는 모든 제품을 반환해야합니다. 코드는 쉼표로 구분하기 때문에, 나는 사람들을 분할하고 검색 할 수 방법을 모르겠어요. 이것은 단지 TSQL을 사용하여 수 있습니까?

편집 : 그것은 미션 크리티컬 한 표입니다. 나는 그것을 변경할 수있는 권한이 없습니다.

해결법

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

    1.당신이 많은 관계로 많은이 있기 때문에 당신은 별도의 테이블에 코드를 저장해야합니다. 당신이 그들을 분리하는 경우에, 당신은 쉽게 확인 할 수 있습니다.

    당신이 많은 관계로 많은이 있기 때문에 당신은 별도의 테이블에 코드를 저장해야합니다. 당신이 그들을 분리하는 경우에, 당신은 쉽게 확인 할 수 있습니다.

    당신이 지금 가지고있는 시스템의 종류에 할 수있을 것이다, 그러나 당신의 데이터가 성장함에 따라 엄청난 성능 문제가있는 것입니다 작업을 한 줄에 여러 개의 검색으로, 컬럼의 텍스트 검색을 필요로한다.

    당신은 당신에게 현재의 경로를 아래로 이동하려고하면 : 아무것도 각 레코드에 코드를 입력 매개 변수와 같은 순서로 (또는 연속)에 보장하지 않기 때문에 당신은 당신의 입력 문자열을 깨지해야합니다. 그런 다음 당신은 할 것

    Code LIKE '%IN%'
    AND Code Like '%QA%'
    

    당신이 확인하는 모든 코드에 대한 추가 문을 쿼리. 매우 비효율적.

    아래의 UDF 아이디어도 좋은 생각입니다. 그러나, 데이터의 크기와 쿼리와 업데이트 빈도에 따라, 당신은뿐만 아니라이 문제가 발생할 수 있습니다.

    에 대한 질의에 당신을 위해 (트리거 또는 기준) 일정에 따라 동기화 정규화 추가 테이블을 만들 수 있을까요?

  2. ==============================

    2.첫째, 원래의 테이블은 다음과 같이 될 수 있도록하자 :

    첫째, 원래의 테이블은 다음과 같이 될 수 있도록하자 :

    
    Id   | Value
    -----+------
    0001 | IN
    0001 | ME
    0001 | OH
    0001 | ON
    0002 | AC
    0002 | ON
    0002 | VI
    0002 | ZO
    0003 | ME
    0003 | OO
    0003 | PS
    0003 | QA
    

    이것은 행에 콤마 분리 값을 분석함으로써 달성된다. 그리고 강력한 CROSS이의 ID를 검색하기 위해 원래의 테이블에 가입 할 키워드 적용 사용합니다. 다음 단계는이 CTE를 조회하는 것입니다.

    
    create function FnSplitToTable
    (
        @param nvarchar(4000)
    )
    returns table as
    return
        with
        Num(Pos) as -- list of positions, numbered from 1 to 4000, largest nvarchar
        (
            select cast(1 as int)
            union all 
            select cast(Pos + 1 as int) from Num where Pos < 4000
        )
        select substring(@Param, Pos, 
            charindex(',', @Param + ',', Pos) - Pos) as Value
            from Num where Pos <= convert(int, len(@Param)) 
            and substring(',' + @Param, Pos, 1) = ','
    go
    
    
    create proc ProcGetProductId
    (
        @Codes nvarchar(4000)
    )
    as
    with
    Src
    (
        Id,
        Code
    )
    as
    (
        select '0001', 'IN,ON,ME,OH'
        union all
        select '0002', 'ON,VI,AC,ZO'
        union all
        select '0003', 'QA,PS,OO,ME'
    ),
    Parse as
    (
        select 
            s.Id, 
            f.Value
        from 
            Src as s
        cross apply
            FnSplitToTable(s.Code) as f 
    )
    select distinct 
        p.Id
    from 
        Parse as p
    join
        FnSplitToTable(@Codes) as f
    on
        p.Value = f.Value
    option (maxrecursion 4000)
    go
    
    exec ProcGetProductId 'IN,ME' -- returns 0001 & 0003
    
  3. ==============================

    3.내가 왜에 대한 명시 설명이 표시되지 않지만 모두가 다른, 당신이하지 말아야 할 것을 당신에게 매우 열망 보인다.

    내가 왜에 대한 명시 설명이 표시되지 않지만 모두가 다른, 당신이하지 말아야 할 것을 당신에게 매우 열망 보인다.

    별도로 정규화 규칙을 깨는에서, 그 이유는 해당 열의 개별 "값"에 인덱스를 가질 수 없기 때문에 당신이 모든 행을 테이블 스캔을 할 것이다.

    간단히 말해서, 데이터베이스 엔진이 당신도 별도의 테이블로 헤어지고, 또는 단독으로 열에 넣어하지 않는 행 코드 'AC'를 포함하는의 빠른 목록의 일종을 유지 할 방법이 없습니다.

    일부 관리 할 수 ​​아래 행의 수를 제한됩니다 SELECT 문에서 다른 기준이있는 경우,이 솔루션을 방지하고 다른 사람이 무엇을 수행하려고 할 수 있다면 이제, 아마도이, 그렇지 않으면 나는 것 좋아,하지만 것 이미 별도의 테이블에 그것을 분할, 당신을 말했다.

    이 디자인 붙어 있다면 이제, 당신은 쿼리의 다음과 같은 형식을 사용하여 검색을 수행 할 수 있습니다

    ...
    WHERE ',' + Code + ',' LIKE '%,AC,%'
    

    이 뜻 :

    마지막 하나는 귀하의 경우 실행 가능한 옵션 인 경우에만 2 문자 코드가 있다면 내가 모르는, 당신은이를 사용할 수 있습니다 :

    ...
    WHERE Code LIKE '%AC%'
    

    다른 기준을 사용하여 행의 수를 제한하지 않는 그러나 다시,이 끔찍하게 수행합니다.

  4. ==============================

    4.이전의 모든 포스터는 당신의 DB 스키마의 정상화에 대한 올바른 있지만, 당신은 당신이 문자열에 값마다 하나의 행과 더불어, 구분 된 문자열 반환 표를 취하는 "테이블 반환 UDF"를 사용하여 원하는 일을 할 수 있습니다 ... 당신이 그것을에 저장된 프로 시저의 다른 테이블에 합류하는 것처럼 당신은이 테이블을 사용할 수있는 등 ...이 즉각적으로 문제를 해결할 수 ...

    이전의 모든 포스터는 당신의 DB 스키마의 정상화에 대한 올바른 있지만, 당신은 당신이 문자열에 값마다 하나의 행과 더불어, 구분 된 문자열 반환 표를 취하는 "테이블 반환 UDF"를 사용하여 원하는 일을 할 수 있습니다 ... 당신이 그것을에 저장된 프로 시저의 다른 테이블에 합류하는 것처럼 당신은이 테이블을 사용할 수있는 등 ...이 즉각적으로 문제를 해결할 수 ...

    다음은 이러한의 UDF에 대한 링크는 다음과 같습니다 FN_Split UDF

    proc 디렉토리에 저장하여 데이터 값의 구분 된 목록을 전달하는 데 사용에 대한 문서 회담 있지만, 기존 테이블의 컬럼에 저장된 구분 된 문자열에서 작동하도록 같은 UDF를 사용할 수 있습니다 ....

  5. ==============================

    5.당신이 데이터 나누기를 저장하는 방법은 규칙을 정상화. 단지 하나의 원자 값은 각 필드에 저장한다. 단일 행에 각 항목을 저장해야합니다.

    당신이 데이터 나누기를 저장하는 방법은 규칙을 정상화. 단지 하나의 원자 값은 각 필드에 저장한다. 단일 행에 각 항목을 저장해야합니다.

  6. ==============================

    6.더 많은 1 세 질문보다,하지만 여전히 도움이 될 것입니다 생각했다. 당신은 MySQL을의 FIND_IN_SET 기능을 사용할 수 있습니다. 나는 확실하지 다른 DBMS를 그것을 지원 여부입니다.

    더 많은 1 세 질문보다,하지만 여전히 도움이 될 것입니다 생각했다. 당신은 MySQL을의 FIND_IN_SET 기능을 사용할 수 있습니다. 나는 확실하지 다른 DBMS를 그것을 지원 여부입니다.

    다음과 같이이 기능을 사용할 수 있습니다 :

    SELECT * FROM `table_name` WHERE FIND_IN_SET('AC', `Code`) > 0
    
  7. ==============================

    7.당신하고 있다는 데이터베이스 설계와 붙어 있지만, 다른 테이블에 별도의 기록에 코드를 넣어 훨씬 쉽게 될 경우에 가능하지 않을 수도 있습니다 :

    당신하고 있다는 데이터베이스 설계와 붙어 있지만, 다른 테이블에 별도의 기록에 코드를 넣어 훨씬 쉽게 될 경우에 가능하지 않을 수도 있습니다 :

    ProductCode
    -----------
    ProductID (FK to Product.ID)
    Code (varchar)
    

    표는 다음과 같습니다

    ProductID    Code
    -----------------
    0001         IN
    0001         ON
    0001         ME
    ...
    

    쿼리는 다음과 같이 보일 것이다 (당신은 어떻게 든 코드를 전달해야 할 것 - 중 별도의 변수 또는 당신은 PROC에서 분리하는 것이 어쩌면 쉼표로 구분 된 문자열로) :

    select ProductID
    from ProductCode
    where Code in ('ON', 'ME')
    
  8. ==============================

    8.난 당신이 스키마 정상화에주의 깊게 볼 것을 여기에 다른 포스터에 동의하지만, 나 또한 바로 가기 삶의 일부임을 알고있다.

    난 당신이 스키마 정상화에주의 깊게 볼 것을 여기에 다른 포스터에 동의하지만, 나 또한 바로 가기 삶의 일부임을 알고있다.

    여기에 당신이 어떤 기능을 수행합니까베이스 사투리로 작성된 예제 함수는 다음과 같습니다

    ALTER FUNCTION "DBA"."f_IsInStringList"( IN @thisItem char(2), IN @thisList varchar(4000) )
    RETURNS INTEGER
    DETERMINISTIC
    BEGIN
    
    
    DECLARE is_member bit;
    DECLARE LOCAL TEMPORARY TABLE tmp (thisItem  char(2)) ;
    DECLARE @tempstring varchar(10);
    DECLARE @count integer;
    
    IF LENGTH(TRIM(@thisList)) > 0 THEN
    
        WHILE LENGTH(TRIM(@thisList)) > 0  LOOP
           -- loop over comma-separated list and stuff members into temp table
           IF LOCATE ( @thisList, ',' , 1) > 0 THEN
    
               SET @count = LOCATE ( @thisList, ',' , 1);
               SET @tempstring = SUBSTRING ( @thisList, 1,@count-1 );
    
               INSERT INTO tmp ( thisItem  ) VALUES (  @tempstring );
               SET @thisList = STUFF ( @thisList, 1, @count, '' )
    
            ELSE
    
                INSERT INTO tmp ( thisItem  ) VALUES ( @thisList );
                SET @thisList = NULL;
    
            END IF;
    
        END LOOP ;
    
    END IF;
    
    IF EXISTS (SELECT * FROM tmp WHERE thisItem   = @thisItem ) THEN
        SET is_member = 1;
    ELSE
        SET is_member = 0 ;
    END IF ;
    
        RETURN is_member;
    END
    

    그런 다음 값이 쉼표로 구분 된 문자열에서 발생 여부를 확인하는 간단한 쿼리를 구축 할 수 있습니다 :

    select * from some_table t 
             WHERE f_IsInStringList('OR', t.your_comma_separated_column) = 1 OR
                   f_IsInStringList('ME', t.your_comma_separated_column) = 1 
    
  9. ==============================

    9.귀하의 경우 간단한에서 LIKE가 작동하지만, 여기 쉼표 표 정규화 (구문 분석 쉼표 개별 레코드에 필드를 구분) 문자열을 분리 구문 분석하는 방법을 솔루션입니다.

    귀하의 경우 간단한에서 LIKE가 작동하지만, 여기 쉼표 표 정규화 (구문 분석 쉼표 개별 레코드에 필드를 구분) 문자열을 분리 구문 분석하는 방법을 솔루션입니다.

  10. ==============================

    10.당신은 PHP와 MySQL을 함께하고 싶어 이 키워드없이 제한의 모든 숫자가 될 수 있습니다

    당신은 PHP와 MySQL을 함께하고 싶어 이 키워드없이 제한의 모든 숫자가 될 수 있습니다

    $var = explode(',',"ahmad,sayeed,asmal,babu");
    $query = "SELECT * FROM post WHERE post_tags LIKE '%a%' "; 
    $query1=NULL;
    foreach($var as  $value)
    {   
        $query1.= " OR post_tags LIKE '%$value%' ";
    }
    
    echo "$query  $query1";
    

    산출:

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

    11.1 단계 : 코드 생성하는 기능

    1 단계 : 코드 생성하는 기능

    <font face="Courier New" size="2">
    <font color = "blue">CREATE</font>&nbsp;<font color = "blue">FUNCTION</font>&nbsp;<font color = "maroon">[dbo]</font><font color = "silver">.</font><font color = "#FF0080"><b>[Udflistofids]</b></font>&nbsp;<font color = "maroon">(</font>
    <br/><font color = "green"><i>&#45;&#45;&nbsp;Add&nbsp;the&nbsp;parameters&nbsp;for&nbsp;the&nbsp;function&nbsp;here</i></font>
    <br/><font color = "#8000FF">@ListOfIDs</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "black"><i>VARCHAR</i></font><font color = "maroon">(</font><font color = "maroon">max</font><font color = "maroon">)</font>
    <br/><font color = "green"><i>&#45;&#45;,&nbsp;@IDsSeperationChar&nbsp;as&nbsp;varchar(5)&nbsp;=&nbsp;','</i></font>
    <br/><font color = "silver">,</font>
    <br/><font color = "#8000FF">@UniqueID1</font>&nbsp;<font color = "black"><i>VARCHAR</i></font><font color = "maroon">(</font><font color = "black">250</font><font color = "maroon">)</font><font color = "silver">,</font>
    <br/><font color = "#8000FF">@UniqueID2</font>&nbsp;<font color = "black"><i>VARCHAR</i></font><font color = "maroon">(</font><font color = "black">250</font><font color = "maroon">)</font><font color = "silver">,</font>
    <br/><font color = "#8000FF">@UniqueID3</font>&nbsp;<font color = "black"><i>VARCHAR</i></font><font color = "maroon">(</font><font color = "black">250</font><font color = "maroon">)</font><font color = "silver">,</font>
    <br/><font color = "#8000FF">@UniqueID4</font>&nbsp;<font color = "black"><i>VARCHAR</i></font><font color = "maroon">(</font><font color = "black">250</font><font color = "maroon">)</font><font color = "silver">,</font>
    <br/><font color = "#8000FF">@UniqueID5</font>&nbsp;<font color = "black"><i>VARCHAR</i></font><font color = "maroon">(</font><font color = "black">250</font><font color = "maroon">)</font><font color = "maroon">)</font>
    <br/><font color = "maroon">returns</font>&nbsp;<font color = "#8000FF">@TabListOfIDs</font>&nbsp;<font color = "blue">TABLE</font>&nbsp;<font color = "maroon">(</font>
    <br/>&nbsp;&nbsp;<font color = "green"><i>&#45;&#45;&nbsp;Add&nbsp;the&nbsp;column&nbsp;definitions&nbsp;for&nbsp;the&nbsp;TABLE&nbsp;variable&nbsp;here</i></font>
    <br/>&nbsp;&nbsp;<font color = "maroon">id</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "black"><i>VARCHAR</i></font><font color = "maroon">(</font><font color = "black">50</font><font color = "maroon">)</font><font color = "silver">,</font>
    <br/>&nbsp;&nbsp;<font color = "maroon">uniqueid1</font>&nbsp;<font color = "black"><i>VARCHAR</i></font><font color = "maroon">(</font><font color = "black">250</font><font color = "maroon">)</font><font color = "silver">,</font>
    <br/>&nbsp;&nbsp;<font color = "maroon">uniqueid2</font>&nbsp;<font color = "black"><i>VARCHAR</i></font><font color = "maroon">(</font><font color = "black">250</font><font color = "maroon">)</font><font color = "silver">,</font>
    <br/>&nbsp;&nbsp;<font color = "maroon">uniqueid3</font>&nbsp;<font color = "black"><i>VARCHAR</i></font><font color = "maroon">(</font><font color = "black">250</font><font color = "maroon">)</font><font color = "silver">,</font>
    <br/>&nbsp;&nbsp;<font color = "maroon">uniqueid4</font>&nbsp;<font color = "black"><i>VARCHAR</i></font><font color = "maroon">(</font><font color = "black">250</font><font color = "maroon">)</font><font color = "silver">,</font>
    <br/>&nbsp;&nbsp;<font color = "maroon">uniqueid5</font>&nbsp;<font color = "black"><i>VARCHAR</i></font><font color = "maroon">(</font><font color = "black">250</font><font color = "maroon">)</font><font color = "maroon">)</font>
    <br/><font color = "blue">AS</font>
    <br/>&nbsp;&nbsp;<font color = "blue">BEGIN</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "green"><i>&#45;&#45;&nbsp;Fill&nbsp;the&nbsp;table&nbsp;variable&nbsp;with&nbsp;the&nbsp;rows&nbsp;for&nbsp;your&nbsp;result&nbsp;set</i></font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">DECLARE</font>&nbsp;<font color = "#8000FF">@Pos</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "black"><i>INT</i></font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">DECLARE</font>&nbsp;<font color = "#8000FF">@ID</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "black"><i>VARCHAR</i></font><font color = "maroon">(</font><font color = "black">50</font><font color = "maroon">)</font><font color = "silver">,</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "#8000FF">@IDsSeperationChar</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "black"><i>VARCHAR</i></font><font color = "maroon">(</font><font color = "black">5</font><font color = "maroon">)</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "red">','</font>
    <br/>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "green"><i>&#45;&#45;SET&nbsp;@ListOfIDs&nbsp;=&nbsp;REPLACE(&nbsp;@ListOfIDs,&nbsp;&nbsp;@IDsSeperationChar,&nbsp;',')</i></font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">SET</font>&nbsp;<font color = "#8000FF">@ListOfIDs</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "fuchsia"><i>Ltrim</i></font><font color = "maroon">(</font><font color = "fuchsia"><i>Rtrim</i></font><font color = "maroon">(</font><font color = "#8000FF">@ListOfIDs</font><font color = "maroon">)</font><font color = "maroon">)</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "silver">+</font>&nbsp;<font color = "#8000FF">@IDsSeperationChar</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">SET</font>&nbsp;<font color = "#8000FF">@Pos</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "fuchsia"><i>Patindex</i></font><font color = "maroon">(</font><font color = "red">'%'</font>&nbsp;<font color = "silver">+</font>&nbsp;<font color = "#8000FF">@IDsSeperationChar</font>&nbsp;<font color = "silver">+</font>&nbsp;<font color = "red">'%'</font><font color = "silver">,</font>&nbsp;<font color = "#8000FF">@ListOfIDs</font><font color = "maroon">)</font>
    <br/>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "green"><i>&#45;&#45;SET&nbsp;@Pos&nbsp;=&nbsp;CHARINDEX(@IDsSeperationChar,&nbsp;@ListOfIDs,&nbsp;1)</i></font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">IF</font>&nbsp;<font color = "fuchsia"><i>Replace</i></font><font color = "maroon">(</font><font color = "#8000FF">@ListOfIDs</font><font color = "silver">,</font>&nbsp;<font color = "#8000FF">@IDsSeperationChar</font><font color = "silver">,</font>&nbsp;<font color = "red">''</font><font color = "maroon">)</font>&nbsp;<font color = "silver">&lt;&gt;</font>&nbsp;<font color = "red">''</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">BEGIN</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">WHILE</font>&nbsp;<font color = "#8000FF">@Pos</font>&nbsp;<font color = "silver">&gt;</font>&nbsp;<font color = "black">0</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">BEGIN</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">SET</font>&nbsp;<font color = "#8000FF">@ID</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "fuchsia"><i>Ltrim</i></font><font color = "maroon">(</font><font color = "fuchsia"><i>Rtrim</i></font><font color = "maroon">(</font><font color = "fuchsia"><i>LEFT</i></font><font color = "maroon">(</font><font color = "#8000FF">@ListOfIDs</font><font color = "silver">,</font>&nbsp;<font color = "#8000FF">@Pos</font>&nbsp;<font color = "silver">-</font>&nbsp;<font color = "black">1</font><font color = "maroon">)</font><font color = "maroon">)</font><font color = "maroon">)</font>
    <br/>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">IF</font>&nbsp;<font color = "#8000FF">@ID</font>&nbsp;<font color = "silver">&lt;&gt;</font>&nbsp;<font color = "red">''</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">BEGIN</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">INSERT</font>&nbsp;<font color = "blue">INTO</font>&nbsp;<font color = "#8000FF">@TabListOfIDs</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">(</font><font color = "maroon">id</font><font color = "silver">,</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">uniqueid1</font><font color = "silver">,</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">uniqueid2</font><font color = "silver">,</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">uniqueid3</font><font color = "silver">,</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">uniqueid4</font><font color = "silver">,</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">uniqueid5</font><font color = "maroon">)</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">VALUES</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">(</font><font color = "#8000FF">@ID</font><font color = "silver">,</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "#8000FF">@UniqueID1</font><font color = "silver">,</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "#8000FF">@UniqueID2</font><font color = "silver">,</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "#8000FF">@UniqueID3</font><font color = "silver">,</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "#8000FF">@UniqueID4</font><font color = "silver">,</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "#8000FF">@UniqueID5</font><font color = "maroon">)</font>&nbsp;<font color = "green"><i>&#45;&#45;Use&nbsp;Appropriate&nbsp;conversion</i></font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">END</font>
    <br/>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">SET</font>&nbsp;<font color = "#8000FF">@ListOfIDs</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "fuchsia"><i>RIGHT</i></font><font color = "maroon">(</font><font color = "#8000FF">@ListOfIDs</font><font color = "silver">,</font>&nbsp;<font color = "fuchsia"><i>Len</i></font><font color = "maroon">(</font><font color = "#8000FF">@ListOfIDs</font><font color = "maroon">)</font>&nbsp;<font color = "silver">-</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "fuchsia"><i>Len</i></font><font color = "maroon">(</font><font color = "#8000FF">@ID</font>&nbsp;<font color = "silver">+</font>&nbsp;<font color = "#8000FF">@IDsSeperationChar</font><font color = "maroon">)</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">)</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">SET</font>&nbsp;<font color = "#8000FF">@Pos</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "fuchsia"><i>Patindex</i></font><font color = "maroon">(</font><font color = "red">'%'</font>&nbsp;<font color = "silver">+</font>&nbsp;<font color = "#8000FF">@IDsSeperationChar</font>&nbsp;<font color = "silver">+</font>&nbsp;<font color = "red">'%'</font><font color = "silver">,</font>&nbsp;<font color = "#8000FF">@ListOfIDs</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">)</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "green"><i>&#45;&#45;SET&nbsp;@Pos&nbsp;=&nbsp;CHARINDEX(@IDsSeperationChar,&nbsp;@ListOfIDs,&nbsp;1)</i></font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">END</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">END</font>
    <br/>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">RETURN</font>
    <br/>&nbsp;&nbsp;<font color = "blue">END</font>
    <br/>
    <br/><font color = "maroon">go</font>&nbsp;
    </font>
    
    
    **2nd Step : Code to get the result**
    
    <font face="Courier New" size="2">
    <font color = "blue">DECLARE</font>&nbsp;<font color = "#8000FF">@udvMax</font>&nbsp;<font color = "black"><i>NVARCHAR</i></font><font color = "maroon">(</font><font color = "maroon">max</font><font color = "maroon">)</font>
    <br/>
    <br/><font color = "blue">SELECT</font>&nbsp;<font color = "#8000FF">@udvMax</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "red">''</font>&nbsp;<font color = "silver">+</font>&nbsp;<font color = "fuchsia"><i>Substring</i></font><font color = "maroon">(</font>&nbsp;<font color = "maroon">(</font>&nbsp;<font color = "blue">SELECT</font>&nbsp;<font color = "red">'&nbsp;Union&nbsp;'</font>&nbsp;<font color = "silver">+</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "red">'Select&nbsp;*&nbsp;from&nbsp;dbo.udfListOfIDs('''</font>&nbsp;<font color = "silver">+</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">tmpu</font><font color = "silver">.</font><font color = "maroon">code</font>&nbsp;<font color = "silver">+</font>&nbsp;<font color = "red">''',&nbsp;'''</font>&nbsp;<font color = "silver">+</font>&nbsp;<font color = "maroon">tmpu</font><font color = "silver">.</font><font color = "maroon">id</font>&nbsp;<font color = "silver">+</font>&nbsp;<font color = "red">''',&nbsp;'''</font>&nbsp;<font color = "silver">+</font>&nbsp;<font color = "maroon">tmpu</font><font color = "silver">.</font><font color = "maroon">code</font>&nbsp;<font color = "silver">+</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "red">''',&nbsp;null,null,null&nbsp;)'</font>&nbsp;<font color = "blue">FROM</font>&nbsp;<font color = "maroon">tmpu</font>&nbsp;<font color = "blue">FOR</font>&nbsp;<font color = "maroon">xml</font>&nbsp;<font color = "maroon">path</font><font color = "maroon">(</font><font color = "red">''</font><font color = "maroon">)</font><font color = "maroon">)</font><font color = "silver">,</font>&nbsp;<font color = "black">7</font><font color = "silver">,</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "black">200000</font><font color = "maroon">)</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "silver">+</font>
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "red">'&nbsp;Order&nbsp;by&nbsp;UniqueID1,&nbsp;UniqueID2,&nbsp;UniqueID3,&nbsp;UniqueID4,&nbsp;UniqueID5,&nbsp;ID'</font>
    <br/>
    <br/><font color = "green"><i>&#45;&#45;Select&nbsp;@udvMax</i></font>
    <br/><font color = "blue">EXECUTE</font>&nbsp;<font color = "#FF0080"><b>Sp_executesql</b></font>
    <br/>&nbsp;&nbsp;<font color = "#8000FF">@udvMax</font>&nbsp;
    </font>
    

    **** 유 2 단계에서 select 문에 조건을 추가해야 할 수 있습니다. **

    이 당신을 도울 것입니다 바랍니다.

    JP

  12. from https://stackoverflow.com/questions/738133/comma-separated-values-in-a-database-field by cc-by-sa and MIT license