[SQL] SQL Server 2008의 쉼표로 분할 문자열
SQLSQL Server 2008의 쉼표로 분할 문자열
두 문자열 A와 B가있다
다음은 문자열은 쉼표가 포함되어 있습니다. 그때, 쉼표로 문자열을 분할 모든 요소를 통과하고 싶습니다.
더 B 문자열이 모든 요소가 포함되어있는 경우 쉼표로하는 분할 0을 반환합니다
(예 : A = "4,6,8"; B = ㄴ 문자열이 포함 "R3799514 때문에"0 복귀 4 정도)
어떻게 저장 프로 시저와 함께이를 달성하기 위해? 사전에 감사합니다!
나는 분할 기능을 볼 수있다 :
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
select top 10 * from dbo.split('Chennai,Bangalore,Mumbai',',')
해결법
-
==============================
1.작동 후 -
작동 후 -
DECLARE @A VARCHAR (100)= '4,5,6' DECLARE @B VARCHAR (100)= 'RXXXXXX' DECLARE @RETURN_VALUE BIT = 1 --DEFAULT 1 SELECT items INTO #STRINGS FROM dbo.split(@A,',') IF EXISTS(SELECT 1 FROM #STRINGS S WHERE CHARINDEX(items, @B) > 0) SET @RETURN_VALUE = 0 PRINT @RETURN_VALUE DROP TABLE #STRINGS
당신은 수도 사용 대신 CHARINDEX의 CONTAINS -
IF EXISTS(SELECT 1 FROM #STRINGS S WHERE CONTAINS(items, @B)) SET @RETURN_VALUE = 0
from https://stackoverflow.com/questions/12999631/split-string-by-comma-in-sql-server-2008 by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL : 병합 날짜 범위 (0) | 2020.07.08 |
---|---|
[SQL] SQL JDBC getgeneratedkeys 반환 열 "ID"을 (를) 찾을 수 없습니다, 열 유형의 알 수없는 (0) | 2020.07.08 |
[SQL] 두 날짜 사이의 금요일의 수 (0) | 2020.07.08 |
[SQL] 합니까 오라클 롤 오류에 트랜잭션을? (0) | 2020.07.08 |
[SQL] 어떻게 PHP :: PDO를 사용하여 변수 MySQL의 스크립트를 실행하려면? (0) | 2020.07.08 |