编写SQL代码:与Yell.com相同的功能

时间:2009-01-22 16:18:42

标签: sql sql-server-2005

任何人都可以帮我尝试编写SQL(MS SqlServer) - 我必须承认这不是最好的技能。

我想要做的是与Yell website的搜索框所显示的完全相同的功能,即

  • 搜索公司类型

  • 和/或公司名称

  • 和/或输入公司名称

  • 位置

如果有人可以建议 SQL代码,您需要编写才能获得与Yell相同的功能 - 这会很棒。

3 个答案:

答案 0 :(得分:2)

通常,人们会这样做:

-- All these are NULL unless provided
DECLARE @CompanyType AS varchar
DECLARE @CompanyName AS varchar
DECLARE @Town AS varchar

SELECT *
FROM TABLE_NAME
WHERE (@CompanyType IS NULL OR COMPANY_TYPE_COLUMN LIKE '%' + @CompanyType  + '%')
    AND (@CompanyName IS NULL OR COMPANY_NAME_COLUMN LIKE '%' + @CompanyName + '%')
    AND (@Town IS NULL OR TOWN_COLUMN LIKE '%' + @Town + '%')

或者这个(只匹配带通配符的列的开头):

-- All these are NULL unless provided
DECLARE @CompanyType AS varchar
DECLARE @CompanyName AS varchar
DECLARE @Town AS varchar

SELECT *
FROM TABLE_NAME
WHERE (@CompanyType IS NULL OR COMPANY_TYPE_COLUMN LIKE @CompanyType  + '%')
    AND (@CompanyName IS NULL OR COMPANY_NAME_COLUMN LIKE @CompanyName + '%')
    AND (@Town IS NULL OR TOWN_COLUMN LIKE @Town + '%')

答案 1 :(得分:0)

您能提供sql运行的数据库布局(架构)吗?有必要给你一个确切的结果。

但总的来说,你要找的是

SELECT * FROM tablename WHERE companyType = 'type' OR companyName = 'companyName' 

答案 2 :(得分:0)

首先需要的不是SQL代码,而是数据库设计。只有这样才开始编写SQL。

与Yell功能匹配的简单表模式可能类似于:

CREATE TABLE Company (
    company_id INT NOT NULL PRIMARY KEY IDENTITY(1,1),
    company_name VARCHAR(255) NOT NULL,
    location VARCHAR(255) NOT NULL
)

然后你会用SQL搜索名称,如:

SELECT * FROM Company WHERE company_name like '%text%'

或按地点:

SELECT * FROM Company WHERE location = 'Location'

当然,真实世界的位置搜索必须使用确切的城市和州,或邮政编码查询,或其智能组合。然后真正的表会有更多的字段,比如描述等。但这是基本的想法。