복붙노트

[SQL] 쉼표로 구분 된 값을 갖는 열세요

SQL

쉼표로 구분 된 값을 갖는 열세요

나는 프런트 엔드로하고, 닷넷 웹 페이지에 있어요 SQL 서버 2008 R2 버전을 보유하고 있습니다.

이 문제에오고, 기본적으로 쉼표로 구분하여 다양한 스킬 세트로 구성 데이터베이스의 열이 있습니다. 예를 들어 일부 후보는 즉 3 개 개의 다른 기술 세트의 C #, SQL 서버, 오라클이있다. 웹 페이지의 텍스트 상자에 C 번호 등의 입력, 오라클을 제공 할 것입니다 C # 및 Oracle 모두의 기술을 가진 후보를 나열하고자하는 사용자는. 나는 그런에서 나열 할 수 있습니다 쿼리를 작성합니다. 나는 자유 텍스트 검색을 시도했습니다. 하지만 자본 / 작은 단어의 경우 가져 오는 데 실패, 와일드 카드 문자에 대한 어떠한 지원, 기술도 순서.

다음은 샘플 쿼리입니다

Select * from profiles where freetext(skills, ‘C#,Oracle’)

해결법

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

    1.내 POV에서 올바른 (및 반갑지 않은) 대답은 테이블 구조를 재 설계하는 것입니다 : 당신이 ACCESS 그들을 별도로하려는 경우 어느 하나의 필드에 값 목록을해서는 안됩니다.

    내 POV에서 올바른 (및 반갑지 않은) 대답은 테이블 구조를 재 설계하는 것입니다 : 당신이 ACCESS 그들을 별도로하려는 경우 어느 하나의 필드에 값 목록을해서는 안됩니다.

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

    2.면책 조항 : 나는 (그 대답에 +1) @EugenRieck에 동의 - 하나 개의 필드에 나쁜 된 디자인 CSV 문자열을한다 때우는.

    면책 조항 : 나는 (그 대답에 +1) @EugenRieck에 동의 - 하나 개의 필드에 나쁜 된 디자인 CSV 문자열을한다 때우는.

    하지만 당신은 ... 처음 이쪽을 봐해야합니다. 아니면 CLR의 해결 방법을 시도해보십시오.

  3. ==============================

    3.이 전체 텍스트에 대한 좋은 하나입니다.

    이 전체 텍스트에 대한 좋은 하나입니다.

    C # 및 오라클 둘을 일치

    select * From Profiles where contains(*,'"Oracle" and "C#"')
    

    경기 중 하나를 C # 또는 Oracle

    select * From Profiles where contains(*,'"Oracle" or "C#"')
    

  4. from https://stackoverflow.com/questions/8679376/searching-a-column-with-comma-separated-values by cc-by-sa and MIT license