[SQL] INSERT INTO TABLE은 쉼표에서 VARCHAR 목록을 분리
SQLINSERT INTO TABLE은 쉼표에서 VARCHAR 목록을 분리
어쩌면 내가 나무에 대한 나무를 보이지 않아요하지만 난 갇혀있어, 그래서 여기에 질문입니다 :
어떻게 내가 쉼표의 목록을 테이블에 VARCHAR-값을 분리 삽입 / 가져올 수 있습니까? 나는이 같은 것을 의미하지 않는다 :
, 그렇지 나는 분할 기능을 가지고 있지만,이 경우에 쓸모없는 것 같다?
여기에 내가 무슨 뜻인지 보여줄 수있는 간단한 (모의-SQL) 예입니다 :
Create Table #IMEIS(
imei varchar(15)
)
INTO INTO #IMEIS(imei)
SELECT * FROM ('012251000362843', '012251001084784', '012251001168744', '012273007269862', '012291000080227', '012291000383084', '012291000448515')
SELECT * from #IMEIS
DROP TABLE #IMEIS;
사전에 감사합니다.
해결법
-
==============================
1.그냥이 "으로 VARCHAR의 쉼표로 구분 된 목록"을 통과 할 수있는 방법이 없기 때문에, 나는 다른 시스템을 생성하는 가정합니다. 당신은 약간 발전기를 수정할 수 있다면, 가능한해야합니다. 오히려 쉼표로 분리보다는, 모든 선택 조합에 의해 분리하고, 필요 목록에 또한 선택 앞에 추가합니다. 마지막으로, 당신은 당신의 테이블 및 열 별칭 부속을 제공해야합니다 :
그냥이 "으로 VARCHAR의 쉼표로 구분 된 목록"을 통과 할 수있는 방법이 없기 때문에, 나는 다른 시스템을 생성하는 가정합니다. 당신은 약간 발전기를 수정할 수 있다면, 가능한해야합니다. 오히려 쉼표로 분리보다는, 모든 선택 조합에 의해 분리하고, 필요 목록에 또한 선택 앞에 추가합니다. 마지막으로, 당신은 당신의 테이블 및 열 별칭 부속을 제공해야합니다 :
Create Table #IMEIS( imei varchar(15) ) INSERT INTO #IMEIS(imei) SELECT * FROM (select '012251000362843' union all select '012251001084784' union all select '012251001168744' union all select '012273007269862' union all select '012291000080227' union all select '012291000383084' union all select '012291000448515') t(Col) SELECT * from #IMEIS DROP TABLE #IMEIS;
그러나 추가 5000 명 엔트리를하는 것에 대한 다른 대답에 귀하의 코멘트에 주목. 나는 당신이 여전히 별도의 문으로 이러한 값 중 일부 분할을 수행해야하므로 선택 제한 당 256 개 테이블, "노조 모두"위의와 패턴을 걷어차 수 있습니다 생각합니다.
-
==============================
2.이런 식으로 뭔가 작업을해야합니다 :
이런 식으로 뭔가 작업을해야합니다 :
INSERT INTO #IMEIS (imei) VALUES ('val1'), ('val2'), ...
최신 정보:
분명히이 구문은 SQL 서버 2008에서만 사용할 수 있습니다 시작합니다.
-
==============================
3.SQL Server는 (내 지식을)하지 않는에서 빌드 분할 기능을 가지고있다. 모든 플랫폼에서 일반적으로 분할 기능은 각각의 문자열로 분할 쉼표로 구분 된 문자열 값을 가질 것이다. SQL 서버, 분할 기능의 주요 목적이나 필요한 행 각 문자열 임시 테이블에 ( 'ABC, CDE, FGH ") 쉼표로 구분 된 문자열 값을 변환한다.
SQL Server는 (내 지식을)하지 않는에서 빌드 분할 기능을 가지고있다. 모든 플랫폼에서 일반적으로 분할 기능은 각각의 문자열로 분할 쉼표로 구분 된 문자열 값을 가질 것이다. SQL 서버, 분할 기능의 주요 목적이나 필요한 행 각 문자열 임시 테이블에 ( 'ABC, CDE, FGH ") 쉼표로 구분 된 문자열 값을 변환한다.
분할 기능 아래는 우리에게 개별 문자열로 분할 쉼표로 구분 된 (또는 다른 구분 값) 문자열을 도움이 될 테이블 반환 함수입니다.
CREATE FUNCTION dbo.Split(@String varchar(8000), @Delimiter char(1)) returns @temptable TABLE (items varchar(8000)) as begin declare @idx int declare @slice varchar(8000) select @idx = 1 if len(@String)<1 or @String is null return while @idx!= 0 begin set @idx = charindex(@Delimiter,@String) if @idx!=0 set @slice = left(@String,@idx - 1) else set @slice = @String if(len(@slice)>0) insert into @temptable(Items) values(@slice) set @String = right(@String,len(@String) - @idx) if len(@String) = 0 break end return end
dbo.split에서 상위 10 *를 선택 ( '첸나이, 방갈로르, 뭄바이', '')
전체는 follownig 링크에서 확인하실 수 있습니다 http://www.logiclabz.com/sql-server/split-function-in-sql-server-to-break-comma-separated-strings-into-table.aspx
from https://stackoverflow.com/questions/6354742/insert-into-table-from-comma-separated-varchar-list by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 SQL 테이블을 '빼기'합니까? (0) | 2020.07.01 |
---|---|
[SQL] 고정 간격 고유 랜덤 시간 세대 (0) | 2020.07.01 |
[SQL] 때 당신은 테이블 반환 함수를 사용해야합니까? [닫은] (0) | 2020.07.01 |
[SQL] VARCHAR2 (n 개의 BYTE | CHAR) 기본 -> CHAR 또는 BYTE (0) | 2020.07.01 |
[SQL] 하나의 MySQL의 쿼리에서 여러 행을 업데이트 (0) | 2020.07.01 |