小编Lei*_*fel的帖子

Oracle SQL - WHERE 子句中的 CASE

有可能以某种方式做到这一点吗?

WITH T1 AS
(
   SELECT 1 AS SEQ, 'NOTHING 1' AS SOME_TYPE FROM DUAL UNION ALL
   SELECT 2 AS SEQ, 'NOTHING 2' AS SOME_TYPE FROM DUAL UNION ALL
   SELECT 3 AS SEQ, 'SOMETHING 1' AS SOME_TYPE FROM DUAL UNION ALL
   SELECT 4 AS SEQ, 'SOMETHING 2' AS SOME_TYPE FROM DUAL UNION ALL
   SELECT 5 AS SEQ, 'SOMETHING 3' AS SOME_TYPE FROM DUAL UNION ALL
   select 6 as seq, 'SOMETHING 4' AS SOME_TYPE from dual
)
, T2 AS
( …
Run Code Online (Sandbox Code Playgroud)

oracle case

6
推荐指数
2
解决办法
16万
查看次数

使用无间隙的升序值有条件地更新行

用户有一个他们想要更新的表。根据其他列中的数据,他们希望使用从 1 开始的无间隙升序值更新特定列。不包含此升序值的行也需要更新。有没有办法用一个 UPDATE 语句来做到这一点?

创建示例数据:

CREATE TABLE t1 AS (
   SELECT CHR(ASCII('a')+rownum-1) letter, rownum Number1, 0 Number2 
   FROM dual connect by rownum<=7);
Run Code Online (Sandbox Code Playgroud)

分配升序 rownum 的更新语句,但它不是无间隙的:

UPDATE t1 SET Letter=’x’, 
   Number2 = DECODE(letter,’a’,rownum,’d’,rownum,’e’,rownum,NULL);
Run Code Online (Sandbox Code Playgroud)

使用序列返回相同的结果:

CREATE SEQUENCE s1;
UPDATE t1 SET letter=’x’, 
   number2 = DECODE(letter,’a’,s1.nextval,’d’, s1.nextval,’e’, s1.nextval,NULL);
Run Code Online (Sandbox Code Playgroud)

完成后,数据应如下所示:

L    NUMBER1    NUMBER2
- ---------- ----------
x          1          1
x          2
x          3
x          4          2
x          5          3
x          6
x          7
Run Code Online (Sandbox Code Playgroud)

我不是在寻找仅适用于我的特定测试用例的技巧,而是寻找问题的通用解决方案。

oracle oracle-11g-r2 gaps-and-islands

6
推荐指数
1
解决办法
2414
查看次数

DBMS_Resource_Manager.Calibrate_IO 用法

DBMS_Resource_Manager 有一个名为Calibrate_IO的过程,带有一个 Physical Disks 输入参数。文档说这个值应该设置为...

数据库存储中物理磁盘的大约数量

在包含 30 个驱动器的 SAN 磁盘组中,一个逻辑驱动器跨未知数量的磁盘条带化,我不确定这意味着什么。我针对 1 和 30 的值运行了该过程,但 IOPS、MBPS 和延迟几乎相同。

这个数字是仅供参考还是实际使用?如果是后者,那么逻辑盘和物理盘不是一一对应的时候应该怎么设置呢?

块运行程序:

set serveroutput on;

DECLARE
   vDisks         Binary_Integer := 30;
   vMaxLatency    Binary_Integer := null;
   vMaxIOPS       Binary_Integer;
   vMaxMBPS       Binary_Integer;
   vActualLatency Binary_Integer;
BEGIN   
   DBMS_RESOURCE_MANAGER.Calibrate_IO(Num_Physical_Disks => vDisks
      , Max_IOPS => vMaxIOPs, Max_MBPS => vMaxMBPS
      , Actual_Latency => vActualLatency);
   DBMS_OUTPUT.PUT_LINE('      Max IOPS:' || vMaxIOPS);
   DBMS_OUTPUT.PUT_LINE('      Max MBPS:' || vMaxMBPS);
   DBMS_OUTPUT.PUT_LINE('Actual Latency:' || vActualLatency);   
END;
/

select * from dba_rsrc_io_calibrate;
Run Code Online (Sandbox Code Playgroud)

oracle oracle-11g-r2

6
推荐指数
1
解决办法
2635
查看次数

如何使用 PL/SQL Developer 从 Windows 机器连接到远程 Oracle 服务器?

我知道我需要在TNSNAMES.ORA文件中配置数据库地址,但是我应该把这个文件放在哪里?

更新

我定义了$TNS_ADMIN变量,创建了TNSNAMES.ORA文件,添加了新连接并重新启动了我的机器。不幸的是,Oracle Logon 中数据库列表仍然是空的。

但是,当我在 PL/SQL Developer 中尝试各种选项时,出现了以下错误:

初始化错误
SQL*Net 未正确安装

OracleHomeKey:
OracleHomeDir:

什么是 SQL*Net?

oracle windows

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

实现数据库时需要做出的前 5 个设计决策是什么?

我正在实施一个 Oracle 系统来存储来自应用程序的事件警报,所以我猜所有模式、数据库设计都将由应用程序通过 sript 处理。

我是数据库设计的新手,在实现数据库时需要做出的前 5 个设计决策是什么?

oracle

6
推荐指数
2
解决办法
1448
查看次数

外键索引有何帮助?

外键索引有何帮助?保持外键索引的标准是什么?

index oracle foreign-key

6
推荐指数
3
解决办法
1832
查看次数

限制 SQL Server 2008 R2 用户只能还原一个数据库(而不是其他数据库)

我的理解是用户必须是“dbcreator”才能恢复数据库。但是,如果我希望特定用户仅还原一个特定数据库,但不能访问或还原服务器上的任何其他数据库,该怎么办?“dbcreator”不允许该用户从本质上恢复任何数据库吗?

sql-server sql-server-2008-r2

6
推荐指数
1
解决办法
1185
查看次数

按月-年关键面值存储日期的最佳实践

我正在制作一项需要保存按年月组合分组和计算的数据的服务。我知道如何计算数据并将其放在新表上。但是我很困惑应该使用哪种数据类型来存储月 - 年值。这是我所考虑的。

  1. 两个整数列,一个为一年,另一个为一个月(清晰易懂且易于操作(使用此表的任何人都可以轻松使用范围和顺序),但我认为这比其他解决方案占用更多空间。
  2. 使用日期字段,并始终为整个月存储一个日期。(很难向用户解释它是如何工作的以及如何创建 WHERE 子句)
  3. 一个 varchar(7) 列并将其放在那里,例如 2012-02,2013-01。对我来说,这很容易理解,但很难操作。

我应该选哪个?或者有其他解决方案。有人可以根据性能建议哪种方式将是一个好的解决方案,因为大多数查询将在 where 解决方案中使用数据范围,而我的新表将有大约 2-5 百万条记录。

sql-server-2008 database-design datatypes date-format

6
推荐指数
1
解决办法
8474
查看次数

将 varbinary(max) 拆分为 16 字节 GUID 的 T SQL 表值函数

我正在尝试编写一个函数,它将 varbinary(max) 字段拆分为一个具有 16 字节 GUID 的表,但我正在努力。我无法找到有关如何使用 varbinaries 执行此操作的任何示例或演练 - 因此感谢任何帮助。我尝试拆分的 varbinary 字段中的数据示例是:

0x09B57E7B1E19CD448698ECDA170B080F7C98FD411E5D264EB6D83AD6D4067C0D336E73299D2408438B625B09BED408D2D8E6C6DE4310194ABD90CF90F1558838731B2B740B508E44843FA98125ADF599669FC433BD4C074294C64E13D880A3ED78D25157C1E7A946B5B9C78E8DA0B5A8ECA73BB5CE59E6439586C445F25F2CDCA2B69483A7AE184A922DBC895C2EEB47910B88E915B7B94FB0EFC84568E2C83F0EF3168F62B6CB4EBA849486164F6DA7805C85383FBF694DB606904E0BA1364DC2DECDC1D00DED4BA28D0F1AA3DD9D1E1AA98697B914924995A26512C7EBD7C1
Run Code Online (Sandbox Code Playgroud)

谢谢

t-sql functions

6
推荐指数
1
解决办法
3090
查看次数

使用由现有值中的字符组成的新字符串更新字段

字段是meta_value,当前值就像01/01/2006

我想把它改成一个字符串,20060101所以我想我可以得到这个值并按正确的顺序用字符更新它。

IE

UPDATE wp_postmeta SET meta_value = meta_value[9]meta_value[8]meta_value[7]meta_value[6] 
Run Code Online (Sandbox Code Playgroud)

mysql update

6
推荐指数
2
解决办法
2万
查看次数