我正在运行:
exec create_quarter @quarter='4q10',@debug='0'
我收到了这条消息:
消息8117,级别16,状态1,过程create_quarter,第234行 操作数数据类型varchar对减法运算符无效。
@quarter is a CHAR(4)
我需要对此声明做些什么:
SET @prev_quarter = CASE WHEN LEFT(@quarter, 1) = '1' THEN '4Q' + RIGHT('00' + CAST(RIGHT(@quarter, 2) - 1 AS VARCHAR), 2)
ELSE CONVERT(VARCHAR, LEFT(@quarter, 1) - 1) + RIGHT(@quarter, 3)
END
解决我的问题?
答案 0 :(得分:3)
RIGHT(@quarter, 2) - 1
应该是
CONVERT(INT, RIGHT(@quarter, 2)) - 1
和
CONVERT(VARCHAR, LEFT(@quarter, 1) - 1)
应该是
CONVERT(VARCHAR, CONVERT(INT, LEFT(@quarter, 1)) - 1)
答案 1 :(得分:0)
此RIGHT(@quarter, 2) - 1
和此LEFT(@quarter, 1) - 1
没有意义。你如何从字符串中减去1?
也许您想要围绕cast(x as integer)
中的那些?
答案 2 :(得分:0)
这两部分是错误的:
RIGHT(@quarter, 2) - 1
和
LEFT(@quarter, 1) - 1
RIGHT
和LEFT
都会返回一个字符串。您不能从字符串中减去数字。