我想使用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查询。
请帮我写一个正确的查询来解决这个问题。
答案 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精确文本
如果不是大量的数据,我建议从客户端的表中返回所有数据,然后在那里过滤它们 - 它会更快并减少数据库的负载