Select 从文本字符串中使用最大 +1 进行投射

Select cast with max +1 from textstring

我正在使用此代码,但在将 varchar 值 'o' 转换为数据类型 int 时出现转换失败。

我的专栏包含示例

o01
o02
o13

select cast('o'+(max(right(panelname, 2 )+1))as varchar(50))

应该使用 Convert 这就是我收到此错误的原因吗?

这是语法错误,这样解决了,但现在值 >10 我想取 tis 结果 o06,现在我取 o6

select 'o' + cast(max(right(panelname, 2) + 1) as varchar(50))

您正在为字符串加一。 1 是一个数字,因此 + 被解释为加法而不是连接。

也许你打算:

select cast('o' + (max(right(panelname, 2 ) + '1')) as varchar(50))

或者,您可能需要:

select 'o' + cast(max(right(panelname, 2) + 1) as varchar(50))

这假设 panelname 的最后两个字符是数字。