【发布时间】:2012-06-23 01:02:02
【问题描述】:
我需要从 MySQL 表中选择满足用户提交的尺寸/数量对的所有产品。
例如,我最终得到 p>
S = 2
M = 2
L = 3
XL = 1
我得到两个分隔符字符串,如下所示:
S,M,L,XL
2,2,3,1
我的数据库查询当前位于 Coldfusion8 页面中,我只是循环遍历从两个字符串创建的二维数组并在我的 SELECT 语句中执行循环
<cfloop from="1" to="#array.length#" index="i">
OR ( size = <cfqueryparam cfsqltype="cfsql_varchar" value="#var.lotArray[i][1]#"> AND qty >= <cfqueryparam cfsqltype="cfsql_varchar" value="#var.lotArray[i][2]#"> )
</cfloop>
问题:
有没有办法在 MySQL INSIDE a SELECT 在存储过程中执行此操作?我想我可以遍历字符串长度并在每次迭代中选择一次,但这将是很多结果集,我不确定如何将它们组合在一起。我还查看了正则表达式,但我不确定如何使用两个正则表达式字符串进行选择,并且两个字符串都需要关联(M=2,L=3...)
感谢任何提示!
【问题讨论】:
-
通过大量使用函数也许可以做到这一点,但你的表现会很糟糕。请尊重第一个 NF(原子值)。
-
Normal Form - 这要归功于数据库规范化,“是组织关系数据库的字段和表以最小化冗余和依赖性的过程。” 以下规范化指南通常会带来更好的性能。
-
您应该更改您的架构,或者继续像您一样在应用程序代码中执行此操作。尝试使用 mysql 执行此操作会产生极其臃肿、难以阅读且效率低下的查询。
标签: mysql regex select stored-procedures loops