2009-07-08 2 views
15

저는 실제로 하나의 필드에 두 개의 별도 필드를 저장해야하는 성가신 데이터베이스를 다루고 있습니다. 따라서 열은 "첫 번째 문자열 ~ @ ~ 두 번째 문자열"과 같이 저장됩니다. 여기서 "~ @ ~"는 구분 기호입니다. (다시 말하지만, 난 그냥 그것을 해결하기 위해 노력하고있어이 설계하지 않았다.)SQL Server : strpos()에 해당하는 항목이 있습니까?

내가, 즉 같은 것을 보일 것이다 쿼리가 두 개의 열이 점을 이동하려는 :

UPDATE UserAttributes 
SET str1 = SUBSTRING(Data, 1, STRPOS(Data, '[email protected]~')), 
    str2 = SUBSTRING(Data, STRPOS(Data, '[email protected]~')+3, LEN(Data)-(STRPOS(Data, '[email protected]~')+3)) 

을하지만, 나는 strpos와 동등한 것을 발견 할 수 없다.

답변

34

사용자 charIndex에가 :

Select CHARINDEX ('S','MICROSOFT SQL SERVER 2000') 
Result: 6 

Link

+0

바늘과 건초 더미를 같은 순서로두면 인수의 순서가 바뀌어 "문자열 또는 이진 데이터가 잘릴 수 있습니다"라는 오류가 발생합니다. strpos. – Noumenon

0

여기 열에 데이터가 필요하면 내가 무엇을 사용 : 당신의 구분과 기능에 ','

create FUNCTION [dbo].[fncTableFromCommaString] (@strList varchar(8000)) 
RETURNS @retTable Table (intValue int) AS 
BEGIN 

    DECLARE @intPos tinyint 

    WHILE CHARINDEX(',',@strList) > 0 
    BEGIN 
     SET @intPos=CHARINDEX(',',@strList) 
     INSERT INTO @retTable (intValue) values (CONVERT(int, LEFT(@strList,@intPos-1))) 
     SET @strList = RIGHT(@strList, LEN(@strList)[email protected]) 
    END 
    IF LEN(@strList)>0 
     INSERT INTO @retTable (intValue) values (CONVERT(int, @strList)) 

    RETURN 

END 

그냥 교체 (또는 어쩌면 그것은 변수화)

관련 문제