【发布时间】:2010-07-26 13:15:34
【问题描述】:
在我的表中有 10 列用于存储“项目”(游戏服务器)。当用户拿起该项目时,它应该遍历 0-9 列(名称为“I0”..“I9”)并在当前行中的列为空时返回。我无法弄清楚如何在 SQL 服务器端执行此操作。 我只能想到每列的 IF EXISTS 但这并不是很好。很高兴有任何帮助!谢谢
【问题讨论】:
-
这看起来很像数据库设计缺陷。您应该使用 X 行来存储项目,而不是 X 列。
-
为什么每列的EXISTS检查不好?这基本上是您想要做的,并且可能是 SQL Server 查找记录的最短路径。任何其他类型的基于游标的迭代或动态 sql 都可能不太好。
-
问题陈述不清楚。找到空列后的预期行为是什么?行包含什么?
-
如果您需要增加商品数量,比如 20 件商品怎么办?添加另外 10 列并更改使用 I0..I9 的每个查询?规范化数据库,这些问题往往会消失。
标签: c# .net sql-server sql-server-2005 tsql