Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 替换MySQL数据库中的特定值_C#_Php_Mysql_Windows - Fatal编程技术网

C# 替换MySQL数据库中的特定值

C# 替换MySQL数据库中的特定值,c#,php,mysql,windows,C#,Php,Mysql,Windows,最近,我一直在试图找到一种方法,以便只替换特定用户上某个列的一部分。 该系统是为一个项目列分层的游戏而设计的(-1,-1,-1,-1,-1,-1,-1)。。。我需要一种方法来用一个新的值替换其中的一个值,但是当我似乎不知道怎么做的时候 作为我需要实现的一个例子 旧项目-(-1,-1,-1,-1,-1,-1,-1,-1) 新项目-(1838,-1,-1,-1,-1,-1,-1,-1,-1) 下次做同样的事情时,它将替换下一个-1值 非常感谢所有能帮我解决这个问题的人 --编辑-- 我忘了提到我们有

最近,我一直在试图找到一种方法,以便只替换特定用户上某个列的一部分。 该系统是为一个项目列分层的游戏而设计的(-1,-1,-1,-1,-1,-1,-1)。。。我需要一种方法来用一个新的值替换其中的一个值,但是当我似乎不知道怎么做的时候

作为我需要实现的一个例子 旧项目-(-1,-1,-1,-1,-1,-1,-1,-1) 新项目-(1838,-1,-1,-1,-1,-1,-1,-1,-1)

下次做同样的事情时,它将替换下一个-1值

非常感谢所有能帮我解决这个问题的人

--编辑--
我忘了提到我们有4000多个账户。因此,替换脚本将仅指定给其中一个帐户。

如果数据位于数据库的一列中,您可以尝试使用replace命令

update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, ‘(-1, -1, -1, -1, -1, -1, -1, -1)’, ‘(1838, -1, -1, -1, -1, -1, -1, -1)’);

为了提高速度和可用性,您应该考虑将这些数组分解为标准化数据。然而,解决办法是:

使用子字符串索引中断字符串

set @a='(-1, -1, 2, -1, -1, -1, -1, -1)';
set @pos=3;
SELECT 
concat(
SUBSTRING_INDEX(@a, ',', @pos-1), -- before item 3
' ,', -- separator
SUBSTRING_INDEX(SUBSTRING_INDEX(@a, ',', @pos),',', -1), -- item 3
' ,', -- separator
SUBSTRING_INDEX(@a, ',', -(8-@pos)) -- after item 3, in an array of 8 items; you could find array length dinamically by replacing comas with "" and comparing new string length to old length +1
)
   >'(-1, -1, 2, -1, -1, -1, -1, -1)'
要更新:

update table user_items
set items= concat(
    SUBSTRING_INDEX(items, ',', @pos-1), -- before item 3
    ' ,', -- separator
    'NEW ITEM HERE',
    ' ,', -- separator
    SUBSTRING_INDEX(items, ',', -(8-@pos)) -- after item 3
    )
where user_id=1

这就是为什么我们总是建议人们规范化他们的数据库对我来说似乎是一个非常糟糕的模式。为什么有这么多专栏?为什么不按要求在其中插入(或更新)记录的表呢?数据库是由在当前团队之前参与游戏的团队预先构建的。那是由我和大约10个人组成的。我是首席数据库开发人员和社区开发人员,我们有大约12个表,都是特定于soemthing的。其中一个表用于库存/背包中的物品。@Luciferus:指定的-ve值是代表单行-多列还是多行-单列值?物品列的信息会随着用户更改物品或在游戏中发现新东西而更改,因此“-1”是一个空插槽,并且一行中的8是一个空库存。item列几乎可以是-1、1-65535之间的所有列,因此这不会太好,因为我需要在特定插槽中找到-1,并只替换其中一个插槽。Oew。。您必须使用某种正则表达式替换mysql。。。在此处找到更多解决方案: