left izquierda ejemplos derecha charindex caracter buscar sql sql-server syntax strpos

izquierda - sql server substring



SQL Server: cualquier equivalente de strpos()? (3)

Estoy lidiando con una base de datos molesta donde un campo contiene lo que realmente debería almacenarse dos campos separados. Así que la columna se almacena algo así como "La primera cadena ~ @ ~ La segunda cadena", donde "~ @ ~" es el delimitador. (De nuevo, no diseñé esto, solo estoy tratando de arreglarlo).

Quiero una consulta para mover esto a dos columnas, que se vería así:

UPDATE UserAttributes SET str1 = SUBSTRING(Data, 1, STRPOS(Data, ''~@~'')), str2 = SUBSTRING(Data, STRPOS(Data, ''~@~'')+3, LEN(Data)-(STRPOS(Data, ''~@~'')+3))

Pero no puedo encontrar que exista un equivalente a strpos.


Charindex del usuario:

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

Enlazar



Si necesita sus datos en columnas aquí, es lo que uso:

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

Simplemente reemplace '','' en la función con su delimitador (o tal vez incluso parametrizarlo)