小编APC*_*APC的帖子

为什么Oracle varchar2具有强制大小作为定义参数?

我想知道为什么Oracle需要在定义中使用size参数VARCHAR2.

我认为这是为了制约.oracle将此参数作为像NUMBERdataType 这样的可选项更好吗?

我经常在将旧表调整为更大的大小时遇到​​问题,因为有时值大于VARCHAR2列的大小定义.

定义一种类型的VARCHAR2(10或者是相同的VARCHAR2(1000).

我想,这是一个不必要的约束.如果没有,你知道这个约束导致一些有用的真实案例吗?为什么没有这种NUMBER类型的声明?

oracle varchar2

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

oracle错误,此处不允许列

我有一段时间没用过Oracle,所以我有点生疏了.

这是我的表:

create table calendar(
username VARCHAR2(12),
content VARCHAR2(100),
dateContent DATE,
type CHAR(3) CHECK (type IN ('PUB', 'PRV')));
Run Code Online (Sandbox Code Playgroud)

但是当我尝试插入这样的值时:

insert into calendar
(username, content, dateContent, type) 
values
(chris, assignment due, to_date('01-OCT-2010 13:00','DD-MON-YYYY HH24:MI'), PUB)
/
Run Code Online (Sandbox Code Playgroud)

我正进入(状态:

ORA-00984: column not allowed here
Run Code Online (Sandbox Code Playgroud)

指向末尾的类型列.我有一种感觉,我没有在DATE字段中得到正确的东西,因为我从未真正使用它.

我做错了什么?

oracle ora-00984

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

java计算两个时间戳之间的时间

我需要计算两个日期之间的时间.

这里的问题是,我需要将其显示为YouTube的视频评论时间戳.也就是说,仅通过最大的衡量标准来显示它.

例如,

  • 如果时间是50秒前它应该说50秒前.
  • 如果时间超过一分钟,应该说一分钟前/十分钟前等.
  • 如果时差为1小时30分钟,则应显示:一小时前.
  • 如果时间比一周前应该说的一周半.
  • 如果时间超过一个月应该说一个月前/两个月前等...
  • 等等等等..

那么处理这个问题的最佳方法是什么?我应该使用caseif返回类似这样的语句吗?或者是否有更好的方法(也许是一个已经做过类似工作的库)?

java time android timestamp date-arithmetic

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

处理Oracle分布式数据库中LOB的最佳方法

如果创建Oracle dblink,则无法直接访问目标表中的LOB列.

例如,您使用以下命令创建dblink:

create database link TEST_LINK 
  connect to TARGETUSER IDENTIFIED BY password using 'DATABASESID';
Run Code Online (Sandbox Code Playgroud)

在此之后,您可以执行以下操作:

select column_a, column_b 
from data_user.sample_table@TEST_LINK
Run Code Online (Sandbox Code Playgroud)

除非列是LOB,否则会出现错误:

ORA-22992: cannot use LOB locators selected from remote tables
Run Code Online (Sandbox Code Playgroud)

这是一个记录在案的限制.

同一页面建议您将值提取到本地表中,但这有点麻烦:

CREATE TABLE tmp_hello 
AS SELECT column_a 
from data_user.sample_table@TEST_LINK
Run Code Online (Sandbox Code Playgroud)

还有其他想法吗?

sql oracle dblink distributed-transactions

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

存储逻辑规则的适当数据结构和数据库模式是什么?

前言:我没有规则引擎,构建规则,建模规则,实现规则的数据结构等等方面的经验.因此,我不知道我在做什么,或者我在下面尝试的是什么.

我正在试图弄清楚如何存储和处理以下假设情景.为了简化我的问题,假设我有一种用户购买对象的游戏类型,其中可能有1000个可能的对象,并且必须按指定的顺序购买对象,并且只能在特定的组中购买.例如,假设我是用户并且我想购买对象F.在我购买对象F之前,我必须先前购买了对象A OR(B和C).我不能同时购买F和A,也不能购买F和B. 它们必须符合规则指定的顺序.先是,然后是F.或者,首先是B,C,然后是F. 我现在并不关心购买之间的时间跨度,或用户的任何其他特征,只是它们是现在的正确顺序.

为潜在的数千个对象存储此信息的最佳方法是什么,这些对象允许我读取所购买对象的规则,然后根据用户以前的购买历史记录进行检查?

我试过这个,但我一直试图实现A OR(B和C)这样的分组.我想将规则存储在我拥有这些表的数据库中:

 Objects
    (ID(int),Description(char)) 

ObjectPurchRules
    (ObjectID(int),ReqirementObjectID(int),OperatorRule(char),Sequence(int)) 
Run Code Online (Sandbox Code Playgroud)

但显然,当您处理结果时,如果没有分组,您将得到错误的答案.如果可能,我想避免过多的字符串解析:).一个对象可能具有未知数量的先前所需购买.用于处理规则的SQL或伪代码片段将不胜感激.:)

database boolean-logic rule-engine

14
推荐指数
1
解决办法
8473
查看次数

真正的Eratosthenes筛子 - 用于生成素数的算法

今天我读了一篇论文:

O'Neill,Melissa E.," Eratosthenes的真正筛选",功能编程期刊,由剑桥大学出版社出版2008年10月9日doi:10.1017/S0956796808007004.

它描述了一种使用优先级队列生成素数的算法:

sieve [] = []
sieve (x:xs) = x : sieve' xs (insertprime x xs PQ.empty)
    where
        insertprime p xs table = PQ.insert (p*p) (map (* p) xs) table
        sieve' [] table = []
        sieve' (x:xs) table
            | nextComposite <= x = sieve' xs (adjust table)
            | otherwise = x : sieve' xs (insertprime x xs table)
            where
                nextComposite = PQ.minKey table
                adjust table
                    | n <= x = adjust (PQ.deleteMinAndInsert n' ns table)
                    | …
Run Code Online (Sandbox Code Playgroud)

algorithm haskell

14
推荐指数
1
解决办法
1323
查看次数

最佳XML数据库

我被分配开发一个系统,在那里我们从多个来源(数百万xml)获取XML并将它们放在某个数据库中,并从我将收到的xml判断,即使它们来自,也不会有任何具体结构相同的来源.有了这个原因,我想我不能建议RDMS,目前正在研究NoSQL数据库.我们需要一个可以进行CRUD并且快速读取的系统.

我一直在关注MarkLogic和eXist,它们都是基于XML的NoSQL数据库,有没有人有过这方面的经验?和任何其他建议?谢谢

xml database database-design nosql

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

获取sql中的几个月和几天中两个日期之间的差异

我需要得到两个日期之间的区别,如果差异是84天,我应该有2个月和14天的输出,我刚刚给出的总代码.这是代码

SELECT Months_between(To_date('20120325', 'YYYYMMDD'),
       To_date('20120101', 'YYYYMMDD'))
       num_months,
       ( To_date('20120325', 'YYYYMMDD') - To_date('20120101', 'YYYYMMDD') )
       diff_in_days
FROM   dual; 
Run Code Online (Sandbox Code Playgroud)

输出是:

NUM_MONTHS    DIFF_IN_DAYS
2.774193548       84
Run Code Online (Sandbox Code Playgroud)

我需要例如这个查询的输出最好是2个月和14天,否则我不介意我能在几个月之后得到确切的天数,因为那些日子不是真的14个因为所有月份都没有30天.

sql oracle date-arithmetic

14
推荐指数
1
解决办法
10万
查看次数

Oracle Regexp用空格替换\n,\ r和\ t

我想从一个包含换行符(NL)字符(和其他的表中选择一列\n,\r,\t).我想使用REGEXP来选择数据并用空格替换(只有这三个)字符,"".

oracle plsql

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

使用特定于数据库的数据类型进行Rails迁移

我目前正在运行Rails迁移,我正在添加一个特定于Postgres,tsvector的数据类型.它以Postgres期望的内置文本搜索功能的形式保存搜索信息.

这是我迁移的一行:

t.column "search_vectors", :tsvector
Run Code Online (Sandbox Code Playgroud)

一切似乎都运行正常,搜索也适用.但是,当我打开schema.rb时,这就是我得到的:

Could not dump table "users" because of following StandardError
Unknown type 'tsvector' for column 'search_vectors'
Run Code Online (Sandbox Code Playgroud)

这使我无法在用户表上运行单元测试,并且鉴于schema.rb应该是我的数据库的权威定义,这也让我觉得非常危险.

我注意到有许多Rails插件似乎使用了像我期望的那样存储tsvector的相同方法,例如tsearchable.我真的只是坚持没有测试,没有我的数据库的权威定义?

migration postgresql ruby-on-rails tsvector custom-data-type

13
推荐指数
1
解决办法
2630
查看次数