在使用.
(点)的php连接变量中,例如$a = "tes", $b="b"
,如果
我连接$a.$b
,它变成“ tesb”。我想要这个,但是在postgres
我尝试使用点号和+,但是错误
我的代码
CREATE OR REPLACE FUNCTION make_ctx_contoh (rl varchar, dat varchar)
RETURNS numeric AS $total$
declare
date_before date;
dan text;
os_l numeric;
BEGIN
date_before = (DATE_TRUNC('month', NOW())
+ '0 MONTH'::INTERVAL
- '1 DAY'::INTERVAL)::DATE;
if rl = 'nasional' THEN
dan = '';
ELSEIF rl = 'kanwil' THEN
dan = 'AND LOWER(a."KANWIL") = knw';
ELSEIF rl = 'kc' THEN
dan = 'AND LOWER(a."KC") = kac';
END IF;
SELECT
SUM("a"."OUTSTANDING") into os_l
FROM
"public".tbl_nominatif_hasil AS "a"
WHERE
"a"."BUSS_DATE" = date_before AND
"a"."COLLDET" = '1 ' + dan; RETURN os_l;
END; $total$ LANGUAGE plpgsql;
当我运行时,选择显示如下错误的make_ctx_contoh('kanwil','2');
:
错误:运算符不存在:未知+文字第6行:
“ a”。“ COLLDET” ='1'+丹
答案 0 :(得分:0)
根据我的代码理解,您希望根据某些条件将条件添加到where子句中。
因此,将您的选择查询转换为AND
OR
逻辑。
SELECT
SUM("a"."OUTSTANDING") into os_l
FROM "public".tbl_nominatif_hasil AS "a"
WHERE "a"."BUSS_DATE" = date_before AND
"a"."COLLDET" = 1
AND ( rl = 'nasional' OR
( rl = 'kanwil' AND LOWER(a."KANWIL") = knw) OR
( rl = 'kc' AND LOWER(a."KC") = kac')
)