【发布时间】:2016-12-19 19:11:14
【问题描述】:
我有四张桌子:
1-dbo.Projects(id,ProjectName,Areas,PaymentSystem,location.id, purpose.id,types.id,etc)
2-dbo.Locations(id,位置名称)
3-dbo.Purpose(id,Purposename)
4-dbo.Types (id, typname)
我有一个搜索条件,这个条件由数据库表中的数据填充:位置、目的和类型,还有用于最大值和最小值的文本框。
我将搜索所有字段和最大值、最小值 - 我到达了这个查询,但错过了获取或过滤最大值和最小值的查询:
ALTER FUNCTION SearchProjects (
@location NVARCHAR(50),
@purpose NVARCHAR(50),
@type NVARCHAR(50),
@max nvarchar(50),
@min nvarchar(50))
RETURNS TABLE
AS
RETURN
(
SELECT p.ProjectName,
p.Areas,
p.PaymentSystem,
p.ReceivedDate,
p.PropertyClassification,
p.ProjectImage,
l.LocationName,
Pur.PurposeName,
t.TypeName
FROM dbo.Projects AS p
LEFT JOIN dbo.Locations AS l ON p.LocationID = l.ID
LEFT JOIN dbo.Purpose pur ON p.PurposeID = pur.ID
LEFT JOIN dbo.[Types] AS t ON p.TypeID = t.ID
WHERE UPPER(ISNULL(l.LocationName,N'')) LIKE N'%' + UPPER(@location) + '%'
AND UPPER(ISNULL(pur.PurposeName,N'')) LIKE N'%' + UPPER(@purpose) + '%'
AND UPPER(ISNULL(t.TypeName,N'')) LIKE N'%' + UPPER(@type) + '%'
AND p.Areas like @max
AND p.Areas like @min
)
GO
SELECT * FROM dbo.SearchProjects('','','','200','250');
【问题讨论】:
-
你在问什么?请具体。
-
我想将最大值和最小值传递给函数,然后返回带有值的区域列上的过滤器,如果我在每条记录中的区域列值从 100 到 300,我想传递最小值 100 和最大值值 200 然后获取与此值匹配的所有结果
-
@IvanStarostin 没有重复问题不同
标签: sql-server tsql sql-server-2012