使用SQL Server

时间:2015-07-14 05:22:00

标签: sql-server sql-server-2008

我想使用SQL server根据我在搜索字段中给出的数据从数据库中检索数据。我在解释下面的场景。假设我的数据库中有这个表:

T_hospital_Clinic

ID     Hospital        Clinic           Location        department
------------------------------------------------------------------
1      KIIMS Hosp.     Kar clinic       Bhubaneswar     Pediatric.
2      SCB medical     Aswani clinic    Cuttack         ENT
3      Sum             Mishra clinic    Bhubaneswar     Orthopedic
4      AMRI            Image dignisys   Cuttack         Neorolgy
5      AIIMS           Mahaveer clinic  Bhubaneswar     ENT
6      shree Hosp      shaoo's clinic   Cuttack        pediatric.

这里的表名是T_hospital_Clinic,我需要将任何位置/部门名称放在搜索字段中,我可以访问医院/诊所名称。

假设我想检查Bhubaneswar中有多少家医院/诊所属于ENT部门,在这种情况下应该查找数据的SQL查询。

请帮我写一个正确的查询来解决这个问题。

4 个答案:

答案 0 :(得分:0)

这看起来像一个非常基本的sql语句,带有where子句,其中包含由and连接的2列的2个条件:

SELECT Hospital, Clinic
FROM T_hospital_Clinic
WHERE Location = @Location -- perhaps it's better to use LIKE here instead
AND department = @department

答案 1 :(得分:0)

这里的过程是从你的ui开始的,你必须从ui的搜索框中获取搜索值,并将这些值作为参数传递给 存储过程并从服务器端代码调用存储过程然后在存储过程内部编写查询以获取详细信息,然后使用新获取的详细信息显示和重新加载详细信息。

存储过程就像

   IF EXISTS (
        SELECT *
        FROM sys.objects
        WHERE NAME = 'exampleproc' type = 'P'
        )
BEGIN
    DROP PROCEDURE exampleproc
END
GO

CREATE PROCEDURE exampleproc @Location NVARCHAR(1000);

@department NVARCHAR(1000);AS

BEGIN
    SELECT Hospital
        ,Clinic
    FROM T_hospital_Clinic
    WHERE Location = @Location
        AND department = @department
END

答案 2 :(得分:0)

试试这个..

Select Hospital
      ,Clinic
FROM T_hospital_Clinic
WHERE Location = 'Fill empty string with Hospital Location'
AND department = 'Fill empty string with Department Name'

答案 3 :(得分:0)

您是否希望显示属于某个位置/部门的诊所/医院以用户输入的文本开头或包含它?区分大小写/不区分大小写?

区分大小写:

对于开始案例:

SELECT Hospital, Clinic
FROM T_hospital_Clinic
WHERE Location LIKE @location + '%' 
AND department LIKE @department + '%' 

对于包含案例:

SELECT Hospital, Clinic
FROM T_hospital_Clinic
WHERE Location LIKE '%' + @location + '%' 
AND department LIKE '%' + @department  + '%' 

不区分大小写:

对于开始案例:

SELECT Hospital, Clinic
FROM T_hospital_Clinic
WHERE LOWER(Location) LIKE LOWER(@location) + '%' 
AND LOWER(department) LIKE LOWER(@department) + '%' 

对于包含案例:

SELECT Hospital, Clinic
FROM T_hospital_Clinic
WHERE LOWER(Location) LIKE '%' + LOWER(@location) + '%' 
AND LOWER(department) LIKE '%' + LOWER(@department)  + '%' 

用户在搜索字段“部门和位置”中输入的@location和@department精确文本

如果不是大量的数据,我建议从客户端的表中返回所有数据,然后在那里过滤它们 - 它会更快并减少数据库的负载