SQL 拼接字符串
把传入的字符串参数 作为where 后面的条件
如下列SQL:
create PROCEDURE [dbo].[Test]
@T nvarchar(50)=''--传入字符串参数
AS
BEGIN
declare @SQL nvarchar(max)
--char(10)换行符
set @SQL='select * from table '+Char(10)
set @SQL=@SQL+' where a='''+@T+''''
Print @SQL
--结果如下,假如转入参考为abc
--select * form table
--where a='abc'
--下面是执行拼接SQL
exec (@SQL)
return 0
end
需要使用动态语句
例如:
DECLARE @参数 VARCHAR(1000)
SET @参数='ID=1'
PRINT 'select * from 表 where '+@参数
EXEC('select * from 表 where '+@参数)
ALTER PROCEDURE [dbo].[Standard_GetBySomeCCS]
@str VARCHAR(100)
AS
BEGIN
DECLARE @CCs_SQL NVARCHAR(1000)='';
IF @参数<>'' AND @参数 IS NOT NULL
BEGIN
SET @TIMESPAN_SQL=' ( 1<>1 ';
SELECT @CCs_SQL=@CCs_SQL+' OR '+@参数
SET @CCs_SQL=@CCs_SQL+') ';
exec('
SELECT
Id,
Foreword,
ApplyArea,
Format,
PageCount,
CCS
FROM Standard
WHERE '+@CCs_SQL+'
'
END
declare @sql nvarchar(max)
set @sql='select .... where '+@str
exec(@sql)