Mik*_*oud 15 sql t-sql sql-server sql-server-2008
好的,所以我在搜索存储过程中得到了这行代码:
SET @where = 'job_code = ''' + REPLACE(@job_code, '''', '''''') + ''''
Run Code Online (Sandbox Code Playgroud)
基本上有两个我想简化的操作 - 第一个是用单引号括起连接值.显然,在上面的语句中,我'
通过使用两个''
然后结束字符串来逃避a ,'
所以我可以连接实际值.必须有更好的方法!
第二个操作将是REPLACE(@job_code, '''', '''''')
我逃避现场可能存在的任何单引号的地方.
是不是有更优雅的方式来编写这行代码?
我认为这是ESCAPE
关键字,但这与LIKE
声明紧密相关,所以不要去那里.
Eri*_*icZ 27
不确定如何执行sql查询,如果使用sp_executesql,可能是这样的
EXECUTE sp_executesql
N'SELECT * FROM YouTable WHERE job_code = @job_code',
N'@job_code varchar(100)',
@job_code = @job_code;
Run Code Online (Sandbox Code Playgroud)
参数化查询答案可能是真正的"正确答案",但要回答您的原始问题,您想要的是QUOTENAME().更具体地说,单引号版本:
SET @where = 'job_code = ' + QUOTENAME(@job_code, '''')
Run Code Online (Sandbox Code Playgroud)
请记住此长度限制(输入是a sysname
,意思是128个字符),因为它旨在引用数据库对象的名称而不是通用机制.