小编Kau*_*yak的帖子

Postgresql更新字符串,前后添加字符

请帮助使用以下数据更新列 card_num:

"000001"
"000002"
..
"000200"
Run Code Online (Sandbox Code Playgroud)

需要做:

"%000001,"
"%000002,"
..
"%000200,"
Run Code Online (Sandbox Code Playgroud)

sql postgresql

3
推荐指数
1
解决办法
2679
查看次数

如何将空字符串放入 JSON_OBJECT_T 对象中?

我正在尝试JSON_OBJECT_T使用以下代码向 a 添加一个空字符串,但我得到的null是值而不是空字符串。

DECLARE
   V_OBJ JSON_OBJECT_T;
BEGIN
   V_OBJ := JSON_OBJECT_T();
   V_OBJ.PUT('customerAccRef','');
   DBMS_OUTPUT.PUT_LINE(V_OBJ.stringify);
END;
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到以下 json

{"customerAccRef":null}
Run Code Online (Sandbox Code Playgroud)

我想要如下输出

{"customerAccRef":""}
Run Code Online (Sandbox Code Playgroud)

有人可以建议我需要做什么更改才能传递空字符串吗?

oracle json plsql oracle12c oracle18c

3
推荐指数
1
解决办法
4683
查看次数

oracle - 在 unpivot 查询中查询 NULL 值

我想从 oracle DB 中获取列值为 的记录NULL。我unpivot也在我的查询中使用。NULL由于unpivot关键字,以某种方式没有选择值。你能帮我了解如何在使用unpivot.

编辑:

SELECT a.emp_id, a.emp_dept, b.emp_location
  FROM employee a,
       location b UNPIVOT (emp_id
                  FOR dummy_id
                  IN (emp_id AS 'EMP_ID', last_date AS 'LAST_DATE'))
 WHERE emp_id = 123 AND b.emp_loc_id = 'india' AND b.location IS NULL;
Run Code Online (Sandbox Code Playgroud)

oracle null unpivot

2
推荐指数
1
解决办法
3271
查看次数

ORACLE中的SYSDATE

我正在尝试使用SYSDATEoracle中的函数获取系统日期,但我一直得到的结果等于表中我要求系统日期的行数

这是我的代码如何:

SELECT TRUNC(SYSDATE)As Currnt_Time FROM TABLE_NAME
Run Code Online (Sandbox Code Playgroud)

这是我的输出:

在此输入图像描述

结果显示当前时间N次,我只想让它显示一次

database oracle

2
推荐指数
1
解决办法
257
查看次数

获取PL/SQL中的本地过程列表

我在DECLARE..BEGIN..END;块中定义了几个本地函数/过程:

DECLARE
  PROCEDURE a IS
  BEGIN
    ...
  END;
  PROCEDURE b IS
  BEGIN
    ...
  END;
BEGIN

END;
Run Code Online (Sandbox Code Playgroud)

如何获得所有已定义函数/过程的列表?(在这个例子中:['a','b'])

oracle plsql

2
推荐指数
1
解决办法
141
查看次数

oracle sql中将日期类型转换为数字类型(Excel)

我试图将两列值连接成一个字符串。一列的数据类型为 as VARCHAR2(12),另一列的数据类型为DATE。虽然我可以将它们加在一起,但结果如下所示,而预期的输出如上所述:

A=XS1297559038
payment_date=24-DEC-15
Run Code Online (Sandbox Code Playgroud)

输入:

select distinct(A), A||payment_date,
Run Code Online (Sandbox Code Playgroud)

输出:

XS129755903824-DEC-15
Run Code Online (Sandbox Code Playgroud)

预期输出:

XS129755903842362
Run Code Online (Sandbox Code Playgroud)

如果我们在 Excel 上做,我们会得到的东西。

提前谢谢了。我正在使用 oracle sql 11.2

sql oracle

2
推荐指数
1
解决办法
2010
查看次数

pg_dumpall 不提示密码

我们正在尝试自动备份集群的所有 PostgreSQL 数据库,我们决定使用“pg_dumpall”实用程序。但是我们找不到在不提示密码的情况下执行“pg_dumpall”的方法。我们正在使用 PostgreSQL-10。

我们正在尝试执行以下命令

pg_dumpall -U "username" -h "hostname" > "location"
Run Code Online (Sandbox Code Playgroud)

我们如何在不提示密码的情况下自动化 pg_dumpall ?请帮助我们解决这个问题。谢谢

postgresql postgresql-10 pg-dumpall

2
推荐指数
1
解决办法
6628
查看次数

查找表中所有数值变量的均值、标准差、百分位数

我在表中有 30 个数字数字列。我想为表中的所有列找到平均值、标准和百分位数。我不想像下面那样手动编写所有列名

select date,
      avg(col1), stddev(col1),
      avg(col2), stddev(col2), 
from table name group by date;
Run Code Online (Sandbox Code Playgroud)

有什么方法可以一次找到所有列的均值、标准差和百分位数。

sql postgresql stored-procedures plpgsql greenplum

2
推荐指数
1
解决办法
9177
查看次数

DATE_PART 和 Postgresql

当我DATE_PART在此查询的函数中减去两个日期时遇到问题。

SELECT
    TO_CHAR(date_trunc('month',sql_activity_days.created_month),'YYYY-MM') AS "sql_activity_days.created_month",
    coalesce(SUM(
        CASE
            WHEN(date_part('day', (sql_activity_days.sale_date + 1) - sql_activity_days.start_date) < 122) 
             THEN sql_activity_days.cad_net_invoiced
            ELSE NULL
        END
    ),0) AS "sql_activity_days.activity_over_122_day_after_signup"
FROM
    camel.f_subscription_touch  AS subscription_touch
    LEFT JOIN sql_activity_days ON subscription_touch.id  = sql_activity_days.customer_id 
    group by date_trunc('month',sql_activity_days.created_month) 
    order by 1 desc limit
500
Run Code Online (Sandbox Code Playgroud)

PostgreSQL 数据库在运行此查询时遇到错误。

错误:函数 date_part(unknown, integer) 不存在 提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。位置:1340

sql postgresql casting datepart looker

2
推荐指数
1
解决办法
7021
查看次数

PLSQL流水线函数返回列表

我正在尝试创建一个函数来从数据库中获取值列表。经过一些研究,我发现我需要使用PIPELINE函数,并找到了一些示例。我完成了我的功能,但不知何故出现了2个我不理解的错误。

这是我的代码:

CREATE OR REPLACE TYPE LISTE_VALUES AS TABLE OF VARCHAR2(2000);
/    

CREATE OR REPLACE FUNCTION F_GET_VAL(
        PI_1 IN VARCHAR2,
        PI_2 IN NUMBER,
        PI_3 IN VARCHAR2)
    RETURN LISTE_VALUES PIPELINED

    IS
        W_ROW_COUNT NUMBER := 0;

    BEGIN

        FOR CUR IN (SELECT VALUE FROM TABLE 
                    WHERE ...
                      ...

                    )

        LOOP
            PIPE ROW (CUR);
            W_ROUNT_COUNT := W_ROW_COUNT + 1;
        END LOOP;

        DBMS_OUTPUT.PUT_LINE('There were '
                            || W_ROW_COUNT
                            || ' rows selected' );

    END F_GET_VAL;
    /
Run Code Online (Sandbox Code Playgroud)

这些是我得到的错误:

[错误] PLS-00382:PLS-00382:表达式类型错误(在行:PIPE ROW(CUR);)

[错误] PLS-00201:PLS-00201:必须声明标识符“ W_ROUNT_COUNT”

(在一行:W_ROUNT_COUNT:= W_ROW_COUNT +1;) …

oracle plsql function pipelined-function

2
推荐指数
1
解决办法
128
查看次数