2
한 열에서 데이터 문자열을 가져 와서 SQL Ser 2008에서 여러 개의 다른 열로 나누려고합니다. 예제 : 이름 계정 445566 0010020056893010445478008 AFD 369. 빌린 공간 구분 된 분할 기능은 훌륭합니다. 문제는 T-SQL을 처음 사용하고 몇 가지 질문이 있다는 것입니다.SQL Server 2008 T-SQL UDF 확률 및 종료
문자열 리터럴뿐만 아니라 전체 테이블을 통해 함수를 실행하려면 어떻게해야합니까?
이렇게하면 이러한 값을 가져 와서 내 테이블에 삽입하는 임시 테이블이 생성됩니까? 삽입 진술일까요? 여기
CREATE FUNCTION [dbo].[Split]
(
@String varchar(max)
,@Delimiter char
)
RETURNS @Results table
(
Ordinal int
,StringValue varchar(max)
)
as
begin
set @String = isnull(@String,'')
set @Delimiter = isnull(@Delimiter,'')
declare
@TempString varchar(max) = @String
,@Ordinal int = 0
,@CharIndex int = 0
set @CharIndex = charindex(@Delimiter, @TempString)
while @CharIndex != 0 begin
set @Ordinal += 1
insert @Results values
(
@Ordinal
,substring(@TempString, 0, @CharIndex)
)
set @TempString = substring(@TempString, @CharIndex + 1, len(@TempString) - @CharIndex)
set @CharIndex = charindex(@Delimiter, @TempString)
end
if @TempString != '' begin
set @Ordinal += 1
insert @Results values
(
@Ordinal
,@TempString
)
end
return
end
--USAGE
select
s.*
from dbo.Split('Name Account 445566 0010020056893010445478008 AFD 369', ' ') as s
where rtrim(s.StringValue) != ''
GO
니스를 삽입 자체가 테이블
당신의 테이블에 대해 UDF의 행 단위 작업을 적용! 나는 그것을 시도 할 것이다. 나는 거기에서 잠깐 스택을 할 수있을 거라 생각했다. 도와 주셔서 감사합니다! – 2boolORNOT2bool
좋지만 오류가 하나 있습니다. 프로 시저 또는 함수 dbo.Split에 제공된 인수 수가 충분하지 않습니다. – 2boolORNOT2bool
아, 죄송합니다. 구분 기호를 두 번째 매개 변수로 추가해야합니다. – gbn