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;
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;
相关文章推荐
- Tomcat端口被占用解决方法(不用重启)
- PostgreSQL新手入门教程
- “传奇”图象数据存储方式
- Silverlight将图片转换为byte的实现代码
- 交换机升级排障实例
- PostgreSQL教程(十):性能提升技巧
- PostgreSQL教程(二):模式Schema详解
- PostgreSQL教程(十三):数据库管理详解
- 深入解读PostgreSQL中的序列及其相关函数的用法
- PostgreSQL教程(八):索引详解
- PostgreSQL教程(三):表的继承和分区表详解
- 简单介绍Ruby on Rails对PostgreSQL数组类型的支持
- PostgreSQL教程(十九):SQL语言函数
- PostgreSQL教程(四):数据类型详解
- PostgreSql新手必学入门命令小结
- 解析Silverlight调用WCF/Rest异常的解决方法
- 用一整天的时间安装postgreSQL NTFS权限
- FREEBSD安装POSTGRESQL笔记
- PostgreSQL8.3.3安装方法第1/2页