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个字符),因为它旨在引用数据库对象的名称而不是通用机制.
| 归档时间: |
|
| 查看次数: |
8904 次 |
| 最近记录: |