首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个简单的SQL查询中的典型ASP -拆分和包含

一个简单的SQL查询中的典型ASP -拆分和包含
EN

Stack Overflow用户
提问于 2009-10-07 19:55:36
回答 4查看 2.5K关注 0票数 0

我有以下sql查询:

SQL = "SELECT * FROM Product =“& Request.QueryString("CategoryId")

此查询告诉您从一个类别中获取所有产品。我想要的能力,使产品可以来自某些类别,而不是从一个类别。

因此,我将Product.ProductCategoryId字段更改为varchar(50),并用逗号分隔了一些类别id,例如:

1,5,7,4

现在,如何在SQL查询中使其工作?在ASP中有拆分和包含(http://www.devx.com/vb2themax/Tip/18364)函数,但是我如何在SQL中做到这一点?

谢谢,英语很抱歉..。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-07 19:58:46

必须注意:永远不要将用户提供的数据连接到SQL查询中;您将面临SQL注入攻击。

我之前的回答(使用"IN")是基于一个错误的想法,即您从用户那里收集多个IN,并针对一个值的列进行搜索。但是你做的正好相反--列有多个值,并且你试图匹配来自用户的一个值。

这是个不好的方法。不要使用逗号分隔的值;添加一个具有一对多关系的新表。然后,查询将类似于

代码语言:javascript
复制
SQL = "SELECT Product.* FROM Product, ProductCategory WHERE ProductCategory.ProductId=Product.ID AND ProductCategory.CategoryId = " & Request.QueryString("CategoryId")

如果您真的想做逗号分隔的事情,可以使用LIKE和%通配符进行搜索,但是它是脆弱的(例如,您必须确保ID "2“与”12“不匹配)。

票数 3
EN

Stack Overflow用户

发布于 2009-10-07 19:57:51

这不是免费的,但是WHERE ProductCategoryId = " & Request.QueryString("CategoryId")是一种非常糟糕的查询方式。

你刚刚对疯狂的SQL注入攻击敞开心扉。

票数 2
EN

Stack Overflow用户

发布于 2009-10-07 19:57:19

http://www.sommarskog.se/arrays-in-sql.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1533822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档