一个sql数据处理的问题

来源:百度知道 编辑:UC知道 时间:2024/09/24 02:20:37
比如2300001000008 在数据类型为char,如何将第3-5位加200?结果为2300201000008。如何处理??在线等候
最后在把23开头的数据都更新为22,最终结果为2200201000008

按您的方法执行的时候报错:
服务器: 消息 8152,级别 16,状态 9,行 1
将截断字符串或二进制数据。
语句已终止。

Update table Set
field=Replace(LEFT(field,2),'23','22')
+SUBSTRING(field,3,2)
+CAST(
CAST(SUBSTRING(field,5,3) As int) +200 As varchar
)
+SUBSTRING(field,8,LEN(field)-7)
Where LEN(field)>8

看你的例子是第五位后的三个数加200

Declare @field char(13)
Set @field='2300001000008'
Select
Replace(LEFT(@field,2),'23','22')
+SUBSTRING(@field,3,2)
+CAST(
CAST(SUBSTRING(@field,5,3) As int) +200 As varchar
)
+SUBSTRING(@field,8,LEN(@field)-7)

执行没有错误啊..