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

编写SQL代码:与Yell.com的功能相同,sql,sql-server-2005,Sql,Sql Server 2005,有谁能帮我写SQL(MSSQLServer)吗?我必须承认,这并不是用最好的技巧 我想做的是完全相同的功能,为搜索框显示的,即 搜索公司类型 和/或公司名称 和/或输入公司名称 在某地 如果有人可以建议使用SQL代码,您需要编写代码才能获得与Yell相同的功能,那就太好了。您能提供SQL将运行的数据库布局(模式)吗?有必要给你一个确切的结果 但一般来说,你要找的是 SELECT * FROM tablename WHERE companyType = 'type' OR companyNam

有谁能帮我写SQL(MSSQLServer)吗?我必须承认,这并不是用最好的技巧

我想做的是完全相同的功能,为搜索框显示的,即

  • 搜索公司类型

  • 和/或公司名称

  • 和/或输入公司名称

  • 在某地


如果有人可以建议使用SQL代码,您需要编写代码才能获得与Yell相同的功能,那就太好了。

您能提供SQL将运行的数据库布局(模式)吗?有必要给你一个确切的结果

但一般来说,你要找的是

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

您首先需要的不是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'

当然,现实世界中的位置搜索必须使用准确的城市和州,或邮政编码查找,或两者的智能组合。一个真正的表会有更多的字段,如描述等。但这是基本的想法。

通常,人们会这样做:

-- 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 + '%')