연결 (Join)와 MSSQL 문자열의 분할 (분할)

출처: 인터넷
작성자: 사용자
키워드: 네트워크 프로그래밍 MSSQL 자습서

연결 (join)와 MSSQL 문자열의 분할 (분할)

종종 마스터 마스터에서 선택 번호를 사용합니다. spt_values를 입력 = 'P', 이것은 그것을 할 수 있는 좋은 방법입니다 하지만 2048 자리와 문이 너무 길고 편리 하지.

요컨대, 당신은 그럴만한 자격이 디지털 지원 표 (100000 또는 사람 요구 당 1 백만).

2. 일정 테이블
유용한 인덱스: ★★★☆☆

SQL 프로그래밍 스타일 책 엔터프라이즈 달력 테이블을 만들어야에 대 한 데이터베이스 자습서 제안: SQL 코드

CREATE TABLE 달력 (
하지 datetime 날짜 NULL 기본 키 클러스터
weeknum int not NULL, not NULL
평일 int,
NCHAR Weekday_desc (3) NULL이 아닌,
is_workday 비트 하지 null,
Is_weekend 하지 비트 null
) cte1와 이동

로 (

선택         & N bsp; 날짜 DATEADD (일, n, '19991231') =

Nums에서 n < = D Atediff (날, '19991231 ', ' 20201231')로
Cte2 (선택

날짜,
weeknum datepart (주, 날짜) =
평일 = (DATEPART (요일, 날짜) + @datefirst-1 @) %7,
& nbsp; Weekday_desc = datename (요일, 날짜) < br > cte1에서)-

캘린더로 삽입 선택,

날짜 & nbsp; Weeknum,
평일,

is_workday Weekday_desc 경우 = 때 (0,6)에서 평일 0 다른 1 끝,
is_weekend = 때 경우 평일 (0,6)에 다음 1 다른 0 끝 < br > Cte2에서


이 테이블은 숫자-보조 테이블에서 쉽게 생성 될 수 있는 제 1th. 처리 날짜 할 필요가이 테이블을 해야 합니다.

중요 한 직원, 등등을 위한 Zichou 도시 하루 (재고 산업), 특별 한 기념일 축제, 생일을 여는 등이 테이블에서 비즈니스 문제에 대 한 특별 한 날짜를 포함할 수도 있습니다. 이 날짜는 종종 중국 법정 휴일 (음력 질문) 같은 계산 하기 어렵다.


3. 문자열 연결 (조인) 및 분할 (분할)
유용한 인덱스: ★★★★★

이 질문은 매우 일반적인! 개발, 그것은 종종 필요 쉼표로 구분 된 문자열에서 값의 집합을 분할에 쉼표로 구분 된 문자열 값의 집합으로 잘라.
이 기능은 쉽게 될 수 있는 XML에 대 한 SS2005 지원 구현.

단일 변수 접합 및 세그먼트:
SQL 코드
-지정 된 구분 기호에 의해 쿼리 결과 집합을 변수로 접합

@datebases varchar (max) 선언
@datebases 설정 물건 (=
선택 ',' + 이름
Sys.databases에서
Order BY 이름
FOR XML Path ('), 1, 1 ')
@datebases 선택
-지정 된 구분 기호에 의해 테이블에는 들어오는 매개 변수 분
@sourceids varchar (max) 선언
@sourceids 설정 = '는, bcd, 123, +-* / =, x & y, < 키 > '
V 선택 = X.n.value ('. ',' varchar (10) ')
(에서
Valuesxml 선택 = Cast (' < 루트 > ' +
교체 (v 선택 @sourceids FOR XML path (') = ", ',', ' < /v >< v > ') +
'< / 루트 >' XML로
) T
교차 적용 t.valuesxml.nodes ('/ 루트/v') x (n)

일괄 연결 및 시장 세분화:
SQL 코드
-테스트 데이터:
만들기 테이블 #tojoin (
tablename varchar () not NULL, < BR > columnname varchar NOT NULL,
기본 키 클러스터 (Tablename, columnname )가 만들기

테이블 #tosplit (
tablename varchar () null이 아닌 기본 키 클러스터,
& nbs p; columnnames varchar (max) #tojoin 값 ('Tblemployee', 'Employeecode')으로 이동

삽입을 NOT NULL
삽입 #tojoin에 값 ('Tblemployee', 'EmployeeName')
#tojoin 값 ('Tblemployee', 'hiredate')에 삽입
삽입 #tojoin에 값 ('Tblemployee', 'Jobcode')
#tojoin 값 ('Tblemployee', 'Reporttocode')에 삽입
삽입 #tojoin에 값 ('tbljob', 'Jobcode') #tojoin을 삽입
값 ('tbljob', 'jobtitle') 삽입
# Tojoin 값 ('tbljob', 'joblevel') #tojoin으로
삽입 값 ('tbljob', 'Departmentcode') 삽입 #tojoin
값 ('tbldepartment', 'Departmentcode')
기능#tojoin 값 ('tbldepartment', 'departmentname')으로 ert가

#tosplit 값에 삽입 ('tbldepartment', ' Departmentcode, departmentname ') #tosplit으로
삽입 값 ('Tblemployee', ' employeecode, employeename, hiredate, Jobcode, reporttocode ') #tosplit 값 ('tbljob', ' departmentcode, jobcode, joblevel, jobtitle')으로 삽입

이동

-연결 (join), SQL Server 2005 XML 확장 문자열로 목록을 설정할 수 있습니다:,


선택 t.tablename ColumnNames 물건 = (
선택, ' + c.columnname
& nbsp; #tojoin C
에서에서 어디 c.tablename = T.tablename
XML Path (')에 대 한),
1, 1, ')
#tojoin에서 T
T.tablename 그룹화

-분할 (분할), XQuery 지원에 대 한 SQL Server 2005를 사용 하 여:
선택
T.tablename,
ColumnName = C.columnname.value ('. ',' varchar (20) ')
(에서
선택
TableName,
Columnnamesxml 캐스트 = (' < 루트 > ' 교체 + (선택 ColumnName = columnnames FOR XML Path (')), ',', ' < / columnname & Gt; < columnname > ') + '< / 루트 >' XML로
#tosplit에서
) T
교차 적용 t.columnnamesxml.nodes ('/ 루트/columnname') C (columnname)

주목 해야 한다 그 경우에는 구분 기호는 ";" 또는 XML 특수 문자를 포함 하는 문자열 값 (같은 &, <>, 등등), 위의 방법을 처리 되지 않을 수 있습니다.

관련 문서

연락처

이 페이지의 내용은 인터넷에서 가져온 것이므로 Alibaba Cloud의 공식 의견이 아닙니다.이 페이지에서 언급 된 제품 및 서비스는 Alibaba Cloud와는 관련이 없으므로이 페이지의 내용이 골칫거리 인 경우 저희에게 알려주십시오. 우리는 5 일 근무일 이내에 이메일을 처리 할 것입니다.

커뮤니티에서 표절 사례를 발견한 경우 info-contact@alibabacloud.com 으로 관련 증거를 첨부하여 이메일을 보내주시기 바랍니다. 당사 직원이 영업일 기준 5일 내에 연락 드리도록 하겠습니다.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.