Sql基本语句:基本 SQL语句返回错误(which of the following is a sql statement)

关于Sql基本语句的问题,在which of the following is a sql statement中经常遇到, 我是 SQL 的新手,我不断收到以下 SQL 语句的错误:

我是 SQL 的新手,我不断收到以下 SQL 语句的错误:

SELECT Id,Name
FROM {PositionInCompany}
WHERE @AdvancedFilter

目前,我只是测试 AdvancedFilter 的默认情况,所以它被设置为“1 = 1”,应该从 PositionInCompany 返回所有的名称和 ID。

错误是附加的。我错过了什么?

科尔

enter image description here

1

这可能是因为正如你所说,它是一个字符串,将翻译成:

SELECT Id,Name FROM {PositionInCompany} WHERE '1=1'

sql 会读这只是一个字符串,它不会知道它是可以激发的东西。您可以将 AdvancedFilter 的值更改为其他值

@AdvancedFilter = 'test'
SELECT Id,Name FROM {PositionInCompany} WHERE 'test'=@AdvancedFilter

或使用的东西来动态构建查询

1

SQL 中的参数是数据的占位符。如果它们包含 SQL 代码,则该代码将被数据库忽略并被视为数据。
这就是为什么您不能将 SQL 块作为参数发送的原因,这也是您不能参数化标识符的原因。

如果需要动态 where 子句,则需要使用动态 SQL,但这通常会在性能和安全性方面产生成本。

但是,我怀疑您当前的 SQL 是错误的,假设FROM {PositionInCompany}意味着您将表名连接成 sql 字符串(仅假设,因为您没有提供任何信息来显示)。

如果我的假设是正确的,你需要停止这样做,阅读SQL injection and how parameterized queries protects you from it,并了解这种形式的串联也容易受到 SQL 注入攻击。

在 SQL 中,不要寻找快捷方式。为特定的表编写特定的查询。这是唯一安全的方法,并且 99.9% 的时间具有最佳性能。

0

谢谢你的回复。

我在 Outsystems 中这样做,但我认为这是一个简单的 SQL 问题。但是,有一个简单的“Expand Inline”选项,需要选择它才能插入字符串语句。它现在工作正常。

问候,科尔

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(495)
程序员业务理解能力差:程序员理解数学方面的学术著作
上一篇
Nz是哪个国家的缩写:Nz是SQL标准吗什么是MySQL中MSAccess中的Nz函数的等效项
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(50条)