MySQL - 是否可以仅更新当前列的部分值?

时间:2012-02-02 14:13:26

标签: mysql

以下是我想要执行查询的示例表:

Structure of table_1
number | photos (CHAR,4)
1234   | 1210

我想更新列photos中的值,但不更改整个值。我想在不知道整个值的情况下,将第三个字符改为“2”。我怎么能这样做?

我知道我可以通过下面描述的方式做到这一点,但问题是值可能是变量,它是列类型CHAR,而不是INT。

UPDATE table_1 SET photos = (photos + 10) where number='1234'

3 个答案:

答案 0 :(得分:1)

midleftright函数,因为照片是char类型:

UPDATE table_1 SET photos = 
 concat(
   left( photos, 2),
   '1',
   right( photos, 1)
 )
 where number='1234'

答案 1 :(得分:1)

使用concat(),left()和substring()

上面的示例如下所示:

update table_1
set photos = concat(left(photos, 2), "2", substring(photos, 4))
where number = '1234'

这个优于左/右,这适用于可变长度的“照片”。

更一般地说,如果你想将第x个位置设置为“2”:

update table_1
set photos = concat(left(photos, x-1), "2", substring(photos, x+1))
where number = '1234'

(注意:我现在没有运行MySQL,所以我无法测试上面的内容。肯定会有一个错误的错误,你应该很容易纠正)

答案 2 :(得分:0)

如果该列仅包含数字,那么您提供的示例将起作用。该值将转换为整数,添加到,然后转换回来。

您可能想要解释您想要这样做的理由。这看起来有点奇怪。