在SQL中增加数值和更改字符串

时间:2013-04-05 20:04:13

标签: mysql arrays replace

我有一个数据库,它在一个复杂的序列化数组中存储了值,其中一个组件是一个字符串,另一个是字符串字符的长度,格式如下:

  

S:8: “test.com”

其中“s”包含引号中字符串的字符长度。

我想将字符串从“test.com”更改为“testt.com”,我在SQL中使用以下语句:

  

UPDATE表SET行=(REPLACE(行,'test.com','testt.com'))

但是,这会破坏相关脚本,因为它不会更新存储“test.com”的字符串前面的“s”中的字符长度。

我想知道是否有一个可以用来替换字符串的查询,然后在更换发生的地方之前增加这个“s”的值,如下所示:

  

UPDATE表SET行=(REPLACE(行,'s:'number'test.com','s:'number + 1'testt.com'))

有人知道这种查询是否可行?

3 个答案:

答案 0 :(得分:0)

如果您需要更改确切的字符串,请使用完全查询 -

UPDATE table SET row = 's:9:"testt.com"' WHERE row = 's:8:"test.com"';

答案 1 :(得分:0)

字符串是“serialized string”。

如果要替换多个字符串,可能更容易创建一个脚本来处理它。

在PHP中,它是这样的:

$searchfor = serialize('test.com');
$replaceby = serialize('testt.com');

// strip last semicolon from serialized string
$searchfor = trim($searchfor,';');
$replaceby = trim($replaceby,';');

$query = "UPDATE table SET field = '$replaceby' WHERE field = '$searchfor';";

这样,您可以根据需要创建精确的查询字符串。 如有必要,请填写正确的数据库连接代码。

答案 2 :(得分:0)

UPDATE table set row = concat('s:',length('testt.com'),':"testt.com"');