mysql - 替换列中给定的字符串出现位置

标签 mysql sql replace

我有一个这样的专栏:

vars
-----------
|A|B|A|D|AB|B...

我想替换一个变量(例如:第三个位置的变量,恰好是 A),但保留任何其他 A。该位置由变量确定。所以我应该得到:

vars
-----------
|A|B|D|AB|B...

我知道我应该使用 REPLACE 和可能的 SUBSTRING_INDEX,但我不知道如何使用。这是我尝试过的: 假设:pos=3;

vars = REPLACE(vars, (SUBSTRING_INDEX(SUBSTRING_INDEX(vars, '|', :pos), '|', -1)), '')

但这实际上替换了所有其他字符并保留了我需要替换的字符。

更新:请注意,我不知道要替换什么变量,只知道它的位置。

更新2:

vars = Concat(substring(vars ,1,:pos-1), substring(vars,:pos+2))

这可以解决问题,但我忘了提到变量并不总是 |A 和 |B 等,还包括 |AB、|AC...所以位置不应该总是移动一个字符,但直到下一个|

最佳答案

如果你知道位置号6是你的位置变量

SELECT  concat(SUBSTRING('|A|B|A|D|G|B',1,6-2),SUBSTRING('|A|B|A|D|G|B',6+1) )

或者如果您知道第二次出现的字符串

    SELECT REPLACE( '|A|B|A|D|G|B', concat( SUBSTRING_INDEX( '|A|B|A|D|G|B', 
'|A', 2 ) , "|A" ) , SUBSTRING_INDEX( '|A|B|A|D|G|B', '|A', 2 ) ) 

关于mysql - 替换列中给定的字符串出现位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43178277/

相关文章:

mysql - 我使用这两个查询中的哪一个查询性能最好?

mysql - WHERE 子句过滤不到一小时的时间

php - 查找两个数据表和日期表连接的空字段

python - 替换字符串中的子字符串

mysql - 仅替换重复项并跳过唯一项

php - 两个表值匹配等于一个值

mysql - 我需要帮助编写家谱的 MySQL INSERT 查询

php - MySQL PHP - fatal error ,查询在页面上失败但不是 PHPMyAdmin

mysql - 关于规划大型数据库的任何提示

javascript - 在 JavaScript 中使用替换删除注释