Sql Server 存储过程,怎样把传入的字符串作为where条件

2025-03-23 12:48:17
推荐回答(4个)
回答1:

  1. SQL 拼接字符串

  2. 把传入的字符串参数 作为where 后面的条件

  3. 如下列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

回答2:

需要使用动态语句
例如:
DECLARE @参数 VARCHAR(1000)

SET @参数='ID=1'

PRINT 'select * from 表 where '+@参数

EXEC('select * from 表 where '+@参数)

回答3:

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

回答4:

declare @sql nvarchar(max)
set @sql='select .... where '+@str
exec(@sql)