SQL Serverの:strposの任意の等価()?
-
11-09-2019 - |
質問
私は1つのフィールドは、実際には2つの別々のフィールドに格納されるべきものを含んでいる迷惑なデータベースを扱っています。だから、列は「〜@〜」の区切り文字である「最初の文字列〜@〜2番目の文字列」、のようなものを格納しています。 (繰り返しますが、私はちょうどそれを修正しようとしている、これを設計していませんでした。)
私は、クエリは次のようになりますこと、2列にこれを移動します
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
ちょうどあなたの区切り文字で関数内で「」を置換(または多分それをパラメータ)
所属していません StackOverflow