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

Sql Server 存储过程,怎样把传入的字符串作为where条件?字符串传什么样,where后就是什么样。如下:

ALTER PROCEDURE [dbo].[Standard_GetBySomeCCS]
@str VARCHAR(100)
AS
BEGIN
SELECT
Id,
Foreword,
ApplyArea,
Format,
PageCount,
CCS
FROM Standard
WHERE XXXXXXXXXXXXXXXXXXX

就是where后面怎么写?
我在代码里调这个存储过程的时候,会把str传进来,我想让这个str整体作为where的查询条件,请问怎么写?

在线等。。。。

例子就是比如我会传一个 str = "CCS = 'C15' OR CCS = 'C12' OR CCS = 'C13' "
我想让这整个str作为查询条件。
而且我的str每次传的还不一样,是动态的。

    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

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-05-21
需要使用动态语句
例如:
DECLARE @参数 VARCHAR(1000)

SET @参数='ID=1'

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

EXEC('select * from 表 where '+@参数)
第2个回答  2013-03-21
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
第3个回答  推荐于2018-03-01
declare @sql nvarchar(max)
set @sql='select .... where '+@str
exec(@sql)本回答被提问者和网友采纳

sql server创建视图添加where条件,条件包含一个参数
视图是不可以传递参数的,如果要传参数可以考虑用存储过程等方法来解决。如,要做一个查询,其中表名是参数。创建存储过程 create proc p_test(@tablename varchar(20))asdeclare @sql varchar(2000)beginset @sql='select * from '+ @tablename +''exec (@sql)end执行存储过程 exec p_test 't...

SQL server 存储过程中 exec中字符怎么匹配
1。@sDate是字符型的,那么引号还是要写得,并且在字符串里面的引号必须连写2个引号 set @sql='left join (select * from where odate='''+@sDate+''') as c '2。如果@sDate是datetime的,那么就转换成字符型的 set @sql='left join (select * from where odate='''+convert(varchar,...

sql server执行存储过程错误,错误提示消息 207,级别 16,状态 1,第 1...
你这行'合同名称='+@ContractNo ,ContractNo 为传进来的参数, 因为字符串拼接后,单引号没有了,导致数据库把把解析为了变量(表的一列),因为数据库没有该列,所以报错了。你这样写试试:set @ContractNoWhere= '合同名称=‘’‘+@ContractNo+’‘’‘不行在M我,一大早我也没清晰 ...

sql怎么把一个表中字段的部分内容替换成另一个表字段的内容
-- tableb 通过 aid 关联tablea 的id,把tableb的fielda字段写入tablea的fielda字段UPDATE tablea SET fielda = (select fielda from tableb where tablea.id=tableb.aid)-- 关联方式一样,把tablea中fielda的字段中的特定字符串替换成tableb中指定字段的值update tablea set fielda = REPLACE...

SQLserver中字符串查找功能patindex和charindex的区别
根据你自己不同的情况,这两个函数对你在SQL Server中的字符串的搜索、控制、分析很有帮助。二、SQL Server CHARINDEX和PATINDEX详解假如你写过很多程序,你可能偶尔会碰到要确定字符或字符窜串否包含在一段文字中,在这篇文章中,我将讨论使用CHARINDEX和PATINDEX函数来 搜索文字列和字符串。我将告诉你这两个函数是...

oracle在写存储过程时怎样将变量和字符串进行连接
变量直接写,要连接字符串的话,用 || 这个符号,后面的字符串用单引号引!例如 变量 V_str 字符串' select emp from table where '连接后为:--- ' select emp from table where '|| V_str --- 希望可以帮助到你!

sql server 怎样在存储过程中调用存储过程
一、SQL SERVER中调用不带输出参数的存储过程 SQL 代码 ?--存储过程的定义 create procedure [sys].[sp_add_product]()as go --存储过程的调用 declare @m_viewcount int declare @m_hotcount int exec sp_add_product @m_viewcount,@m_hotcount 二、SQL SERVER中调用带输出参数的存储过程 SQ...

SQL SERVER 中把表名作为参数传递给存储过程后,怎么把表中的数据赋值...
可以用下面这种写法:DECLARE @T INT;DECLARE @Sql NVARCHAR(200);set @Sql = 'SELECT @T = START FROM ' + @TABLENAME + ' WHERE ...';EXEC SP_EXECUTESQL @Sql, N'@T INT OUTPUT', @T OUTPUT;参考资料:http:\/\/hi.baidu.com\/wangzhiqing999\/blog\/item\/6f6da...

SQL存储过程中将记录集某一记录的某一字段赋值给变量
LZ 试试这个 把位置换换 SELECT TOP 1 @参数=Column FROM Table WHERE ...

sql中的存储过程set是什么意思
的人添加 firstname:UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'WHERE子句设置查询条件,过滤掉不需要的数据行。结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

相似回答