sql参数查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql参数查询相关的知识,希望对你有一定的参考价值。

这一题,参数查询是什么意思呀? 这一题怎么做? 大神们谢谢~

数据查询,上面有个条件查询,这里就相当于这里的功能,将条件最后拼接成sql语句进行查询出结果,你这是不是access?追问

你好。不是呢,是用SQL Server,我只会写:
select 姓名,工资 from GZ where 工资=3200。
其他不懂了,望大神指教指教。

追答

select 姓名,工资 from GZ where 工资>3500

参考技术A declare @salary int = 0
set @salary = 3500
select 姓名,工资 from GZ where 工资 > @salary

这种?追问

你好,请问可以外部输入参数来查询吗? 就是运行后会弹出对话框来输入参数。

追答

不知道你用什么工具 sql server好像不能的吧。或者你在其他地方读,像什么readln啊,然后把数据传进去,上面那些有存储过程或者函数写。。。我看你做卷子应该不用吧...

追问

好的,谢谢你啦~

本回答被提问者采纳

在 SQL 查询中匹配绑定参数

【中文标题】在 SQL 查询中匹配绑定参数【英文标题】:Matching bind parameters in a SQL query 【发布时间】:2012-02-09 17:53:46 【问题描述】:

我使用参数化查询,如下所示:

SELECT * FROM foo WHERE bar = :p0 AND baz = :p1

我的参数名称采用以下形式:

^:[a-z]\d+$

我目前正在扩展PDOStatement 以提供一种转储完全构造查询的方法,因为PDOStatement::queryString 没有替换绑定参数值。

用正则表达式匹配查询中的这些参数最准确的方法是什么?

一个不太准确的初始尝试:

$sql = "SELECT * FROM foo WHERE bar = 'bar:a0bar :u2 barbar :w4' AND baz = :q2 AND boz IN (:z6, :yy1, :q, :r22, :b7)";
$matches = array();
preg_match_all('/(:[a-z]\d+)\b/', $sql, $matches);
$params = $matches[1];

这会失败,因为字符串中的参数匹配,但我不确定避免这种情况是否可行。

请记住,我很清楚没有任何方法是 100% 准确的,这只是为了将构造的查询转储到日志文件以帮助调试,所以 生成的查询不会发送到执行数据库。

【问题讨论】:

【参考方案1】:

当我使用 PDO 时,我传递了一个绑定参数数组,然后我可以将 SQL 语句和数组一起记录。

如果您尝试将参数替换到 SQL 语句中,结果将不会考虑任何转义 PDO 将对您的参数执行。

【讨论】:

-1 因为这不能回答我的问题,并且因为 PDO 不会转义绑定参数。这就是首先使用它们的目的:它们不需要转义,因为查询是在发送参数之前在服务器端准备好的,从而无需将值注入 SQL 本身。 PDO will emulate prepared statements/bound parameters for drivers that do not natively support them ... 感谢您的更正,但这不适用于我正在使用的驱动程序,或任何最常用的驱动程序,包括 Oracle、MSSQL、MySQL 和 PostgreSQL。事实上,我不太确定它适用于哪些驱动程序......我猜可能是 SQLite 和其他非 RDBMS 驱动程序。【参考方案2】:

我相信我目前正在使用的解决方案可能是最实用的。除此之外的任何事情似乎都会增加不必要的复杂性。

【讨论】:

以上是关于sql参数查询的主要内容,如果未能解决你的问题,请参考以下文章

sql参数化查询

分页查询的sql 语句(参数1,参数2)?怎么写?

带参数的sql查询语句

带有输入参数的动态sql模糊查询????

sql 模糊搜索无输入参数时查询所有

在sql语句中,怎样将参数做为表名传递到查询语句中