以下是我想要执行查询的示例表:
Structure of table_1
number | photos (CHAR,4)
1234 | 1210
我想更新列photos
中的值,但不更改整个值。我想在不知道整个值的情况下,将第三个字符改为“2”。我怎么能这样做?
我知道我可以通过下面描述的方式做到这一点,但问题是值可能是变量,它是列类型CHAR,而不是INT。
UPDATE table_1 SET photos = (photos + 10) where number='1234'
答案 0 :(得分:1)
是mid,left和right函数,因为照片是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)
如果该列仅包含数字,那么您提供的示例将起作用。该值将转换为整数,添加到,然后转换回来。
您可能想要解释您想要这样做的理由。这看起来有点奇怪。