为什么我必须投入存储过程

Nov*_*Net 2 t-sql

在我的存储过程中

为什么我必须将课程转换为varchar(不写完整的存储过程),而我的DB中的course_id是int类型,在转换之后它正常工作可能是什么原因

@course int =null,
    SET @query = @query + 'Where course_id='+ cast(@course as varchar)
Run Code Online (Sandbox Code Playgroud)

Qua*_*noi 5

在一个VARCHAR + INT表达中,VARCHAR是隐含的INT,而不是相反.

这个查询:

SELECT  '12' + 345
Run Code Online (Sandbox Code Playgroud)

将返回357,而不是'12345',而这一个:

SELECT  'ab' + 1
Run Code Online (Sandbox Code Playgroud)

会失败而不是回归 'ab1'

如果你想要字符串连接,你应该使用显式转换,这是你正在做的.