【发布时间】:2012-06-22 14:09:58
【问题描述】:
我有一个类似的查询:
SELECT ...
FROM ...
WHERE .. AND SomeID = @someID
我继承了这个包含一些动态元素的大型存储过程,所以我需要从另一个表的列中获取 someID 的值,即执行查找。
我该怎么做?
另一列看起来像:
TypeValue
'SomeID=1232,OtherID=3383'
某些列 TypeValue 是 VARCHAR(1000),它包含一个逗号分隔的类型和值对字符串。
所以我需要在, 上拆分,然后在= 上拆分,所以以某种方式得到:
SET @SomeID = SELECT TypeValue FROM MyTABLE WHERE ..
我该怎么做?
(注意,这是 sql server 2000)
【问题讨论】:
-
你能重新构建你的数据模型来避免这种编码吗?
-
亲爱的主人,闻起来很臭。变量名称和变量数量是动态的。如果是这样,您将需要使用动态 SQL 来使用变量。如果不是,为什么要将它们存储为逗号分隔的字符串?无论哪种方式...
-
OP 说他继承了这段代码,根据用户的说法,这可能意味着它“多年来一直运行良好”。它是经典的“实体-属性-值”设计,经过扭曲使其更加丑陋。我同意@Norla,需要使用动态 SQL...
-
我不知道为什么你们认为解析字符串需要动态 SQL。您能否发布一个答案来展示您认为需要的技术?我同意这是一个糟糕的设计,但如果它在 SQL Server 2000 上仍然很有可能是 OP 所坚持的。
标签: sql tsql sql-server-2000