您的位置:首页 > 数据库

postgresql 判断参数是否为空,拼接字符串的条件查询

2016-01-14 11:30 465 查看
CREATE OR REPLACE 

FUNCTION 名称(

    IN  no text,

    IN  mac text,

    IN station_no text)

  RETURNS TABLE(v_id integer, v_no text, v_mac text, v_station_id integer, v_station_no integer, v_station_name text) AS

$BODY$

   DECLARE 
sql text;
sql_temp text;
count integer;

BEGIN
sql:='SELECT 
       a.sid, 
a.no, 
a.mac,
b.sid,
b.no,
b.name
FROM tb_handset a
INNER JOIN tb_station b

        ON a.station_id = b.sid';

        

       IF in_no = '' AND in_mac = '' AND in_station_no = '' THEN

          RETURN QUERY EXECUTE sql;

          

       ELSE

          sql:=sql||' WHERE ';

          sql_temp:='';

          

          IF in_no <> '' THEN
sql_temp:= sql_temp ||'AND a.no ='''||in_no||'''';

          END IF;

          IF in_mac <> '' THEN
sql_temp:= sql_temp ||'AND a.mac ='''||in_mac||'''';

          END IF;

          IF in_station_no <> '' THEN
sql_temp:= sql_temp || 'AND b.no ='''||in_station_no||'''';

          END IF;

          
SELECT length(sql_temp) INTO count;             //查询字符串长度
SELECT substring(sql_temp from 5 for count) INTO sql_temp;       //截取字符串
sql:= sql ||sql_temp;

      

          RETURN QUERY EXECUTE sql;

       END IF;

END

$BODY$

  LANGUAGE plpgsql VOLATILE;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息