質問

私は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への任意の等価が存在することを見つけることができません。

役に立ちましたか?

解決

ユーザーCHARINDEXます:

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

リンクする

他のヒント

PATINDEX関数は、文字列の一部としてあなたのパターンの位置を与える必要があります。

PATINDEX ( '%pattern%' , expression )

http://msdn.microsoft.com/en-us/library/ ms188395.aspxする

あなたがここに列にデータが必要な場合は、私が使用するものです。

  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

ちょうどあなたの区切り文字で関数内で「」を置換(または多分それをパラメータ)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top