2012-01-29 85 views
0

是否可以在单个SQL语句中选择可变数量的元素?例如。根据具有值的参数数量,在语句中选择这些参数。如果声明是:SQL中的动态选择变量

"Select x, y, z from table A where abc='123';" 

而x,y和z是从前一页传递的值。所以,如果只是X和Z值,则该语句应该像:

"Select x, z from table A where abc='123';" 

,如果只有x的值,它应该选择:

"Select x from table A where abc='123';" 

这是可能的吗?

+0

“x,y和z是从前一页传递过来的值” - 你在说什么?什么“上一页”? – Oded 2012-01-29 20:00:00

+0

我的意思是我使用PHP,我想给用户选择他们想要查看的字段,所以我希望语句显示基于用户选择的结果。我将这些参数作为参数传入数据库函数以相应地检索结果。 – codingNewbie 2012-01-29 20:05:03

+0

您是试图用纯SQL还是应用程序服务器或存储过程来做到这一点? – 2012-01-29 20:05:05

回答

0

如果您是从网页构建它,那么只需使用您的代码修改select语句以传递给SQL服务器。

如果你在SQL(存储过程或其他)中进行此操作并传入要选择的列,那么是的,你可以动态地将select语句构建为一个变量。然后执行该变量。这是可能的,但不推荐。

var语句= “选择” + @columns + “从表其中ABC = '123'” EXEC @statement

显然,如果你使用这个网页上,以避免SQL注入谨慎使用。

+0

我使用PHP和mysqli进行数据库连接..列名是数组还是什么? – codingNewbie 2012-01-29 20:11:18

+0

如果您使用的是PHP,只需使用php来动态创建语句。看到这里:http://stackoverflow.com/questions/4704051/dynamic-sql-queries-in-code-possible – 2012-01-29 20:14:37

0

正确的方法是根据用户的请求连接SQL语句,或者在代码中隐藏列。试图在SQL语句中执行它不是正确的方法。

0

如果您正在动态构建一个sql字符串,只需在您的PHP中添加一些条件逻辑,查看哪些参数已传入并使用适当的SQL。