AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-125378

Christopher Karsten's questions

Martin Hope
Christopher Karsten
Asked: 2020-12-29 01:12:00 +0800 CST

在 Informix 中将秒转换为 HH:MM:SS

  • 3

如何在 Informix 中将浮点数转换为 HH:MM:SS。我有一个运行持续时间为 1449.448520410 的列。我想将其转换为人类可读的格式。有很多方法可以解决这个问题,但我正在努力寻找一种方法。

我已经确定运行以下内容接近我想要的,但不包括时间:

select b.run_duration, floor(run_duration / 60) || ':' || lpad(mod(run_duration, 60), 2, '0') as run_duration_time from ph_task a, ph_run b where a.tk_id = b.run_task_id order by run_duration DESC

输出:

24:09

我想看到的是:

00:24:09

如何自定义我的 SQL 来提供它?

informix
  • 2 个回答
  • 356 Views
Martin Hope
Christopher Karsten
Asked: 2020-05-21 01:03:02 +0800 CST

使用字符作为总和值的 case 语句

  • 1

我有一个表,我试图在选择上提取单个返回值,表示通过使用总和计算器启用或禁用表上的压缩,列值压缩必须为否,并且 auto_compressed 必须等于禁用。

以下是表中的示例数据:

partnum          1048577
dbsname          rootdbs
owner            informix
tabname          sysdatabases
collate
dbsnum           1
compressed       No
auto_compressed  Disabled

partnum          1048577
dbsname          rootdbs
owner            informix
tabname
collate          TBLSpace
dbsnum           1
compressed       No
auto_compressed  Disabled

partnum          1048577
dbsname          rootdbs
owner            informix
tabname          sysdatabases
collate
dbsnum           1
compressed       No
auto_compressed  Enabled

partnum          1048577
dbsname          rootdbs
owner            informix
tabname          sysdatabases
collate
dbsnum           1
compressed       Yes
auto_compressed  Disabled

您可以使用以下内容进行测试:

create table test (
partnum         varchar(255),
dbsname         varchar(255),
owner           varchar(255),
tabname         varchar(255),
collate         varchar(255),
dbsnum          varchar(255),
compressed      varchar(255),
auto_compressed varchar(255));

insert into test values ('1048577','rootdbs','informix','','TBLSpace','1','No','Disabled');
insert into test values ('1048577','rootdbs','informix','sysdatabases','','1','No','Disabled');
insert into test values ('1048577','rootdbs','informix','sysdatabases','','1','No','Enabled');
insert into test values ('1048577','rootdbs','informix','sysdatabases','','1','Yes','Disabled');

我只想在一天结束时确定数据库中的所有记录是否压缩 = 否或 auto_compressed = 禁用,然后我想要一个返回说禁用或启用。

我把它放在一起,但我正在努力用值替换数字:

select
sum(case when Compressed != 'No' OR auto_compressed != 'Disabled' then 'Enabled' else 'Disabled' end) as Condition
from test

我在下面收到此错误消息:

367: Sums and averages cannot be computed for character columns.

我可以用数字替换这些值,它的工作原理如下:

select
sum(case when Compressed != 'No' OR auto_compressed != 'Disabled' then 1 else 0 end) as seven
from test

我相信我的案例陈述是不正确的,或者有更好的方法来做到这一点。我确实需要帮助,因为此时我的想法令人难以置信。

informix
  • 2 个回答
  • 308 Views
Martin Hope
Christopher Karsten
Asked: 2019-08-26 08:15:37 +0800 CST

Informix 创建过程来查询记录,如果值不存在则使用 select 删除

  • 1

我正在尝试创建一个过程,该过程将查询表列以检索表名,并在 proc 中使用它来运行查询以进行选择(如果存在)。如果不存在,则从 systables_growth 表中删除行。

以下是我到目前为止的内容:

CREATE function test_sp();
DEFINE v_tab CHAR(255);
      FOREACH SELECT unique(tabname) INTO v_tab from systables_growth
        BEGIN
            SELECT * FROM v_tab;
            ON EXCEPTION IN (-206) -- If no table was found, delete record from systables_growth table
            DELETE from systables_growth WHERE tabname = 'v_tab'
            END EXCEPTION WITH RESUME;
        END
    END FOREACH
END function;

创建时收到以下语法错误:

CREATE function test_sp();
DEFINE v_tab CHAR(255);
FOREACH SELECT unique(tabname) INTO v_tab from systables_growth
BEGIN
SELECT * FROM v_tab;
ON EXCEPTION IN (-206) -- If no table was found, delete record from systables_growth table
#^
#  201: A syntax error has occurred.
#
DELETE from systables_growth WHERE tabname = 'v_tab'
END EXCEPTION WITH RESUME;
END
END FOREACH
END function;

我正在尝试定义一些逻辑来查询从表中提取的记录,以运行从提取的表名中进行选择的查询。如果选择说表不存在,那么我希望从表中删除该行。我不知道我是否使用了正确的逻辑。

我不希望该过程生成任何输出,我希望它保持沉默。

informix
  • 1 个回答
  • 385 Views
Martin Hope
Christopher Karsten
Asked: 2019-08-24 05:34:36 +0800 CST

Informix 触发器在插入前删除记录

  • 1

我正在尝试创建一个触发器,以便systables_growth在插入发生之前简单地从表中删除记录,基于date_added列上使用的 where 子句用于超过一定天数(在本例中为 15 天)的记录:

我正在使用以下内容:

CREATE TRIGGER systables_growth_clnup
INSERT ON systables_growth
DELETE FROM systables_growth
WHERE date_added < (CURRENT - 15 UNITS DAY)

执行上述操作时出现以下语法错误。

CREATE TRIGGER systables_growth_clnup
INSERT ON systables_growth
DELETE FROM systables_growth
#^
#  201: A syntax error has occurred.
#
WHERE date_added < (CURRENT - 15 UNITS DAY)
informix
  • 1 个回答
  • 449 Views
Martin Hope
Christopher Karsten
Asked: 2019-07-31 01:26:32 +0800 CST

为范围 sql 之间的值创建列

  • 1

我想要实现的是基于范围之间的 num_extents 创建一个新列,并且只打印下面的表名。

这就是我所拥有的 [table1]:

在此处输入图像描述

这就是我想要的[table2]:

在此处输入图像描述

我使用了一个 case 语句,它允许使用以下内容获取范围之间的值:

select sum(case when num_of_extents between 0 and 9 then 1 else 0 end) as one,
       sum(case when num_of_extents between 10 and 19 then 1 else 0 end) as two,
       sum(case when num_of_extents between 20 and 29 then 1 else 0 end) as three,
       sum(case when num_of_extents between 30 and 39 then 1 else 0 end) as four,
       sum(case when num_of_extents between 40 and 49 then 1 else 0 end) as five,
       sum(case when num_of_extents >= 50 then 1 else 0 end) as six
from (
select
a.tabname,
count(*) num_of_extents,
sum( pe_size ) total_size_pg,
round(sum( pe_size*4),2) total_size_kb,
round(sum( pe_size*4/1024 ),2) total_size_mb,
round(sum( pe_size *4/1024/1024),2) total_size_gb
from systabnames a, sysptnext b, sysdatabases c
where a.partnum = b.pe_partnum
and a.dbsname = c.name
and a.dbsname = 'system'
-- a.tabname not like ' %'
group by 1
order by 3 desc, 4 desc
) a

上面的输出:

one    2
two    1
three  1
four   5
five   0
six    2

请忽略使用的列的命名,但我不想在范围之间求和,而是想打印出表的名称,而不是像 [table2] 中那样。如何更改我的 sql case 语句以在 informix 中执行此操作?

informix
  • 1 个回答
  • 1703 Views
Martin Hope
Christopher Karsten
Asked: 2019-07-23 02:21:55 +0800 CST

如何使用编号重命名informix中的索引

  • 0

我目前面临将索引重命名为数字的问题。

我尝试了以下方法:

RENAME INDEX 584_1973_tmp TO '584_1973';
RENAME INDEX 584_1973_tmp TO ' 584_1973';
RENAME INDEX 584_1973_tmp TO "584_1973";
RENAME INDEX 584_1973_tmp TO " 584_1973";

以上似乎都不起作用。是否可以在 Informix 中将索引重命名为数字?

informix
  • 1 个回答
  • 157 Views
Martin Hope
Christopher Karsten
Asked: 2017-07-15 00:31:47 +0800 CST

如何根据重复的列显示不包括最大值的值

  • 0

我面临一个具有挑战性的问题,我需要根据不包括最大值的重复列打印特定列中的所有字段

我的查询计划:

select event_no,
       bs_id
from   bs_bank_mast
where  event_no in (select   event_no 
                    from     bs_bank_mast 
                    group by event_no 
                    having   count(*) > 1) 
order by event_no ASC

我的输出:

event_no       bs_id

1692163        40672
1692163        41974
1692163        40672
1692163        41974
1723264        67460
1723264        67499
1723264        68357
1723265        67929
1723265        67383
1723266        67735
1723266        67423
1723266        67969
1723266        68164
1723266        67501 


event_no       bs_id

1692163        40672
1723264        67460
1723264        67499
1723265        67929
1723266        67735
1723266        67423
1723266        67969
1723266        68164

所以基本上除了 bs_id 的最后一个最大值之外的所有内容都被打印出来

我试过的查询:

select event_no,
       bs_id
from   bs_bank_mast
where  event_no in (select   event_no 
                    from     bs_bank_mast 
                    group by event_no 
                    having   count(*) > 1) 
and    event_no < max(bs_id)

我得到的错误是:

在这种情况下对聚合的使用不当

请您提供我需要的帮助。

informix
  • 1 个回答
  • 2216 Views
Martin Hope
Christopher Karsten
Asked: 2017-06-06 05:59:56 +0800 CST

如何创建可以将记录插入两个表的存储过程 [Informix]

  • -2

我需要创建一个可以在两个表中插入记录的存储过程

我有以下两个表:

create table "sacro".doc_submitted 
(
doc_id serial not null constraint "sacro".nc_doc_sub00,
doc_category_id decimal(9,0),
ent_no varchar(11,1),
trak_no varchar(12),
indexuser varchar(8),
dateindexed datetime year to second,
doc_status decimal(2,0),
doc_mode decimal(2,0),
doc_path varchar(254),
doc_pages integer,
image_exists smallint,
scan_user varchar(8),
scan_date datetime year to second,
job_type varchar(10),
job_id integer,
cdr_label varchar(255),
image_release char(1)
);


create table "sacro".job 
(
job_id serial8 not null ,
ent_no varchar(11,1),
compl_user varchar(8),
trak_no varchar(12),
job_type varchar(10),
scan_indicator varchar(1),
job_accept smallint,
date_received date,
date_accept date,
agent_code varchar(6),
fax_send smallint,
primary key (job_id)  constraint "informix".pk_job00
);

我的目标是有一个存储过程,它可以根据两个表中不包括 job_id 和 doc_id 的列在这两个表中插入一条记录。

这是我到目前为止所拥有的:

CREATE PROCEDURE sp_IndexDocument (
doc_category_id decimal(9,0),
ent_no varchar(11,1),
trak_no varchar(12),
indexuser varchar(8),
dateindexed datetime year to second,
doc_status decimal(2,0),
doc_mode decimal(2,0),
doc_path varchar(254),
doc_pages integer,
image_exists smallint,
scan_user varchar(8),
scan_date datetime year to second,
job_type varchar(10),
cdr_label varchar(255),
image_release char(1),
compl_user varchar(8),
scan_indicator varchar(1),
job_accept smallint,
date_received date,
date_accept date,
agent_code varchar(6),
fax_send smallint)

INSERT INTO sacro:doc_submitted (doc_category_id,ent_no,trak_no,indexuser,dateindexed,doc_status,doc_mode,doc_path,doc_pages,image_exists,scan_user,scan_date,job_type,job_id,cdr_label,image_release)
VALUES (doc_category_id,ent_no,trak_no,indexuser,dateindexed,doc_status,doc_mode,doc_path,doc_pages,image_exists,scan_user,scan_date,job_type,cdr_label,image_release);
INSERT INTO sacro:job (ent_no,compl_user,trak_no,job_type,scan_indicator,job_accept,date_received,date_accept,agent_code,fax_send)
VALUES (ent_no,compl_user,trak_no,job_type,scan_indicator,job_accept,date_received,date_accept,agent_code,fax_send);
END PROCEDURE;

我执行以下过程将值插入到两个表中:

EXECUTE PROCEDURE sp_IndexDocument ('100', 'M1997554436', 'M1997554436', 'HEN481', 'EXTEND(MDY(6,28,1999), YEAR to SECOND)+9 UNITS HOUR+6 UNITS MINUTE+22 UNITS SECOND', '1', '0', '\19990107\M\1997\014436\100\1.tif', '2', '1', 'xcel', 'EXTEND(MDY(7,8,1999), YEAR to SECOND)+10 UNITS HOUR+56 UNITS MINUTE+4 UNITS SECOND', 'CM31', '692118', '19990095', 'Y','B1998025909', 'Good', 'B19980259089', 'FILE', 'N', '1', NULL, NULL, NULL, NULL)

我得到以下错误代码:

674: Routine (sp_indexdocument) can not be resolved.

如果数据类型相同,我不明白问题出在哪里

stored-procedures informix
  • 2 个回答
  • 7605 Views
Martin Hope
Christopher Karsten
Asked: 2017-05-24 05:11:53 +0800 CST

在 Oracle 12 C 中安装 EM13 模板时出错

  • 2

Linux 操作系统版本适用于:

Oracle Linux Server release 7.3

Oracle 数据库和网格基础设施版本:

Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
Oracle Grid Infrastucture 12c Release 2

* All prerequisites met 

尝试使用 dbca 在 Oracle 中创建数据库模板时收到以下错误消息:

在此处输入图像描述

在此处输入图像描述

我不确定该错误是否与版本问题或我无法识别的问题有关。如果有人遇到这个问题,请您提供解决方案。

oracle oracle-12c
  • 3 个回答
  • 2826 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve