sql - 如何将变量连接到postgresql中的其他变量?
问题描述
.
在使用(点)的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;
当我运行 selectmake_ctx_contoh('kanwil','2');
时显示如下错误:
错误:运算符不存在:未知 + 文本第 6 行:
“a”.“COLLDET” = '1' + dan
解决方案
根据我从您的代码中可以理解的内容,您希望根据某些条件向 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')
)
推荐阅读
- java - Firebase 使用 addTextChangedListener 检查用户名是否存在
- php - 如何完全删除订单页面上的订单标题?
- javascript - 在 html5 filereader for javascript 中使用位置 url 而不是输入文件来选择文件
- reactjs - 用户拒绝 React.js 和文件夹访问
- typescript - 使用电子邮件和密码进行 Angular6 Firebase 身份验证
- r - 在 R Shiny 中运行系统命令
- parquet - 是否可以用 pyarrow 编写镶木地板统计信息?
- android - 如何从 string.xml 文件中获取这种类型的数组到 android 活动
- botframework - 无法构建和部署默认 Azure Web Bot
- c++ - C++ 删除 [] 崩溃