当前位置: 首页 > 面试题库 >

SQL变量作为Where子句中的列名

乐正焕
2023-03-14
问题内容

我需要有关SQL逻辑的帮助,并且我已经(在研究中)进行了2天的工作,但获得了零成功。

我的目标是尝试将变量从ASP页传递到存储过程,该过程将变量用作where子句中列名称的条件。

因此,例如(我的查询的简化版本):

@strDept nvarchar(10), @strUser nvarchar(30)
-- The asp page will pass f18 to @strDept & Ted Lee to strUser
-- f18 is the column name in my database that I need in the where.

select x, y, z from table1 where @strDept in (@strUser)
-- and this is the select statement, notice the where clause.

存储过程确实执行,但是它不返回任何值,而且我知道它会将@strDept视为文字nvarchar而不是列名。

所以我想我的问题是,如何使SQL Server 2005将@sqlDept变量视为列名?


问题答案:

如果这是公司内部的应用程序,那么为什么每个人都反复重申并击败SQL注入技术……使用动态SQL非常简单。如果您对这些只是内部用户感到满意,那么它非常简单。这是概念。本质上,您编写了一个SQL语句,该语句编写的字符串实际上是一个SQL语句,然后执行它。

CREATE Procedure myDynamicProcedure
@strDept nvarchar(10), 
@strUser nvarchar(30)

as

BEGIN

1.声明一个变量以存储SQL语句。

 DECLARE @SQL varchar(max)

2.将您的@SQL变量设置为SELECT语句。 基本上,您正在构建它,以便它返回您要编写的内容。像这样:

   SET @SQL = 'select x, y, z from table1 where' + @strDept + 
 ' in ' + @strUser

3.执行@SQL语句,它就像您运行的一样: 从table1中选择x,y,z,其中f18 =’Ted Lee’

EXEC (@SQL)
END


 类似资料:
  • 问题内容: 在我的SQL中,我使用and 子句执行搜索。但是,我需要对两列的组合值执行搜索- 和: 这行不通,但是我想知道如何才能按照这些原则做点什么? 我试图按两列来分开搜索,如下所示: 但这显然不起作用,因为搜索查询是这两列的组合值。 问题答案: 使用以下内容: 请注意,为了使此功能按预期工作,应修剪名字和姓氏,即,它们不应包含前导或尾随空格。最好在插入数据库之前在PHP中修剪字符串。但是您也

  • WHERE 子句用于过滤记录。 SQL WHERE 子句 WHERE 子句用于提取那些满足指定标准的记录。 SQL WHERE 语法SELECT column_name,column_name FROM table_name WHERE column_name operator value; 演示数据库 在本教程中,我们将使用 RUNOOB 样本数据库。 下面是选自 "Websites" 表的数据

  • 行动时间 - SQL语句作为变量 unlang的一个非常强大的功能是它允许您通过sql模块执行SQL查询。查询实际上是一个变量,此查询的返回值是变量的值。我们现在将修改上一个练习以从数据库中获取时间并将其添加到Reply-Message值。 要执行SQL查询,您需要包含并配置FreeRADIUS以使用sql模块。 sql模块还需要在至少一个部分中使用,例如,授权或记帐部分。 1.在FreeRADI

  • 问题内容: 嗨, 我有一个变量$ 1,其中包含逗号分隔的电子邮件地址,例如john @ example.com,pat @ example.com。我希望在类似where的子句中传递此变量 但是显然这行不通,我尝试了APEX_UTIL.STRING_TO_TABLE和DBMS_UTILITY.COMMA_TO_TABLE但徒劳。 任何帮助表示赞赏。 问题答案: 正如Pavanred所暗示的那样,最

  • 问题内容: 我在某处看到此查询- 什么是 “N” 是什么意思?我不确定这是否仅对SQL Server有效。 问题答案: N代表“国家字符”,它表示字符串的内容为Unicode。 只要碰到专有名称或其他可能包含默认ASCII字符集以外的字符的实体,就应该使用Unicode(/ )。如果不使用前缀将此类字符串括起来,则会丢失数据。例如: 结果: 您还应确保在您或其他子句中对列使用前缀。不使用前缀时,由

  • Where 子句用于在从表中获取数据或将其包含在其他表中时生成条件。如果满足条件,则它从表中返回一个特定值。我们使用 WHERE 子句来过滤数据库中的记录并获取主要记录。 在 SELECT 语句中使用了 WHERE 子句,但它也用于 UPDATE、DELETE 帐户等。 语法: 我们使用逻辑运算符生成条件,它们是:、、、、 等。 下面来看一个例子,已更换的理解: 示例 请参阅具有以下记录的 EMP