使用多个值,我使用的是类似这样的表在T-SQL SELECT语句:SQL:在一个SELECT语句
SELECT DISTINCT name, location_id, application_id FROM apps
WHERE ((application_id is null) or (application_id = '4'))
AND ((location_id is null) or (location_id = '3'))
这似乎很好地工作一个APPLICATION_ID或一个LOCATION_ID搜索时,但是如果我想为多个位置运行声明呢?我想返回所有结果的未知数量的location_id和application_id的。例如,如果我想在location_id的2,3,4,5处搜索某人,但只有一个application_id。我将如何做到这一点?
预先感谢您!
编辑:我是个白痴!我没有给你所有的细节,这听起来很简单。所有这些值都在表格内给出。用户将不得不从表格中的列中选择ID而不是插入它们。在对这个问题做了一点研究之后,我似乎在吹捧一个可行的解决方案。
CREATE FUNCTION iter$simple_intlist_to_tbl (@list nvarchar(MAX))
RETURNS @tbl TABLE (number int NOT NULL) AS
BEGIN
DECLARE @pos int,
@nextpos int,
@valuelen int
SELECT @pos = 0, @nextpos = 1
WHILE @nextpos > 0
BEGIN
SELECT @nextpos = charindex(',', @list, @pos + 1)
SELECT @valuelen = CASE WHEN @nextpos > 0
THEN @nextpos
ELSE len(@list) + 1
END - @pos - 1
INSERT @tbl (number)
VALUES (convert(int, substring(@list, @pos + 1, @valuelen)))
SELECT @pos = @nextpos
END
RETURN
END
任何人都可以帮我完善这个以满足我的需求吗?对不起,如果我的问题不是很清楚,我正在努力自己去解决它。
编辑2:关于这个问题做更多的阅读之后,似乎我需要一个存储过程来做到这一点。上面的代码似乎是我所需要的,但是我很难根据我的需要来定制它。该表结构如下:
application_id name location_id
------------------------------------------------------
1 Joe Blogs 34
2 John Smith 55
据我只是链接到相应的文章:
“的处理 问题的正确方法是使用一个函数, 解包串。到表下面 是一个非常简单的这样的功能:”
所以,看来我需要将这些值解压到一个字符串,并通过使用该存储过程将它们传递edure。任何想法,我如何才能得到这个工作?
编辑3:我设法解决它使用charindex()和convert(),而设置它们在顶部。感谢您的全力帮助,我再次为痛苦道歉。
发布表定义和一些示例行,查询和预期的答案会提高答案的质量。 – Andomar 2009-06-23 09:49:26
道歉没有给出完整的解释,只是遇到了一些技术困难,而我正在绞尽脑汁解决这个问题。 – 2009-06-23 10:06:53