我想知道为什么Oracle需要在定义中使用size参数VARCHAR2.
我认为这是为了制约.oracle将此参数作为像NUMBERdataType 这样的可选项更好吗?
我经常在将旧表调整为更大的大小时遇到问题,因为有时值大于VARCHAR2列的大小定义.
定义一种类型的VARCHAR2(10或者是相同的VARCHAR2(1000).
我想,这是一个不必要的约束.如果没有,你知道这个约束导致一些有用的真实案例吗?为什么没有这种NUMBER类型的声明?
我有一段时间没用过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字段中得到正确的东西,因为我从未真正使用它.
我做错了什么?
我需要计算两个日期之间的时间.
这里的问题是,我需要将其显示为YouTube的视频评论时间戳.也就是说,仅通过最大的衡量标准来显示它.
例如,
那么处理这个问题的最佳方法是什么?我应该使用case或if返回类似这样的语句吗?或者是否有更好的方法(也许是一个已经做过类似工作的库)?
如果创建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)
还有其他想法吗?
前言:我没有规则引擎,构建规则,建模规则,实现规则的数据结构等等方面的经验.因此,我不知道我在做什么,或者我在下面尝试的是什么.
我正在试图弄清楚如何存储和处理以下假设情景.为了简化我的问题,假设我有一种用户购买对象的游戏类型,其中可能有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或伪代码片段将不胜感激.:)
今天我读了一篇论文:
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) 我被分配开发一个系统,在那里我们从多个来源(数百万xml)获取XML并将它们放在某个数据库中,并从我将收到的xml判断,即使它们来自,也不会有任何具体结构相同的来源.有了这个原因,我想我不能建议RDMS,目前正在研究NoSQL数据库.我们需要一个可以进行CRUD并且快速读取的系统.
我一直在关注MarkLogic和eXist,它们都是基于XML的NoSQL数据库,有没有人有过这方面的经验?和任何其他建议?谢谢
我需要得到两个日期之间的区别,如果差异是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天.
我想从一个包含换行符(NL)字符(和其他的表中选择一列\n,\r,\t).我想使用REGEXP来选择数据并用空格替换(只有这三个)字符,"".
我目前正在运行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