0

file_name|||file_id|||field_idのようなデータを含むデータベース列があり ます。 クエリを実行して、データをfile_idだけに置き換えたいと思います。

したがって、私のクエリは、本質的に、パイプ間の file_id を解析し、フィールドを更新して完全な文字列をファイル ID だけに置き換える必要があります。

4

2 に答える 2

1

で古い形式の行を見つけることができます

WHERE mycol LIKE '%|||%|||%';

使用できる中間フィールドを抽出するには

SUBSTRING_INDEX(mycol, '|||', -2)

これは「fileid|||fieldid」を返し、次に

SUBSTRING_INDEX(SUBSTRING_INDEX(mycol, '|||', -2), '|||', 1)

これは「fileid」を返します。

そう:

UPDATE mytable SET mycol = SUBSTRING_INDEX(SUBSTRING_INDEX(mycol, '|||', -2), '|||', 1) WHERE mycol LIKE '%|||%|||%';

しかし、最初に私は

SELECT 
    mycol AS beforethecure,
    SUBSTRING_INDEX(SUBSTRING_INDEX(mycol, '|||', -2), '|||', 1) AS afterthecure
FROM mytable
WHERE mycol LIKE '%|||%|||%';

念のため。また、'after' の結果を SELECT して、それらが fileid の構文に準拠しているかどうかを確認することもできます。

于 2012-11-05T13:27:04.137 に答える
1

試す

SELECT SUBSTRING( SUBSTRING_INDEX('file_name|||file_id|||field_id','|||', 2), 
                 LOCATE('|',  'file_name|||file_id|||field_id' ) + 3  ) 
于 2012-11-05T13:34:16.707 に答える