SQL Server:어떤 동의 strpos()?
-
11-09-2019 - |
문제
내가 다루는 데이터베이스는 하나의 필드 포함 무엇이 진짜로 저장되어야 합 두 개의 필드가 있습니다.그래서 열 저장되는가"와 같은 첫 번째 문자열~@~두 번째 문자열",여기서"~@~"를 구분 기호.(다하지 않았다,나는 디자인이,나는 그냥 그것을 해결하기 위해 노력하고.)
내가 원하는 쿼리를 이동하는이 두 가지로 열을,그 다음과 같이 보일 것이다:
UPDATE UserAttributes
SET str1 = SUBSTRING(Data, 1, STRPOS(Data, '~@~')),
str2 = SUBSTRING(Data, STRPOS(Data, '~@~')+3, LEN(Data)-(STRPOS(Data, '~@~')+3))
그러나 나는 찾을 수 없는 어느 해당하는 strpos 존재합니다.
해결책
다른 팁
PatIndex 함수를 제공해야 당신의 위치 패턴으로 일부의 문자열입니다.
PATINDEX ( '%pattern%' , expression )
열에 데이터가 필요한 경우 여기에 내가 사용하는 내용이 있습니다.
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)-@intPos)
END
IF LEN(@strList)>0
INSERT INTO @retTable (intValue) values (CONVERT(int, @strList))
RETURN
END
Delimiter로 함수에서 ',', '또는'파라미터가 될 수도 있음)를 바꾸십시오.
제휴하지 않습니다 StackOverflow