1
可変長文字列を主文字列から取得しようとしています。 例:文字列の中から可変長部分文字列を引き出す
私は '名前name'、 'diffname diffname'、 'diffname2 diffname2' という文字列からなどを引き出すために必要
ABC*12*1*name name****XX*123456789~
ABC*12*1*diffname diffname****XX*234567890~
ABC*12*1*diffname2 diffname2***XX*345678901~
。そして、アスタリスクで名前の間に ''を置き換えてください。ただし、文字列の最初のスペースに挿入するだけでは複数の名前がある可能性があります。したがって、2番目または3番目のスペースは、名前文字列の長さによって異なります。
SELECT
CHARINDEX('*1*',data)+3 AS startpos,
CHARINDEX('***',data) AS Endpos,
data
from #t
where data like '%ABC*12*1*%'
これにより、可変長文字列の開始点と終了点が得られます。だから私は試してみてください。
SELECT SUBSTRING(data,CHARINDEX('*1*',data)+3,CHARINDEX('***',data) -CHARINDEX('*1*',data)+3)
FROM #t
WHERE data like '%ABC*12*1*name%'
しかし、これは基本的に開始点から始まり、その後、エンドポイントを過ぎても実行し、結果セットとして私に
name n name aa*****X
を与えます。
私は間違っていますか?
SELECT .....-CHARINDEX('*1*',data)+3
FROM .....
WHERE .....
あなたはとてもそれはそうのようなカッコで書かれることになっEndpos
を減算するとします:
-(CHARINDEX('*1*',data)+3)
とブラケットが削除された場合、最後の部分
はい。ありがとうございました!これが私を殺していた。そして、とてもシンプルでした。 – braindead