我有一个列,其值由前缀和一些值组成,例如:
ABC-Car
ABC-Dog
ABC-Suit
CBR-Train
Run Code Online (Sandbox Code Playgroud)
在我的查询中,我想删除某些前缀,例如,如果我删除'ABC-',它会给我以下内容:
Car
Dog
Suit
CBR-Train
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,所有字符对前缀后的部分都有效.所以我有可能:
ABC-ABC-Cat
Run Code Online (Sandbox Code Playgroud)
我希望这个修剪后的值返回:
ABC-Cat
Run Code Online (Sandbox Code Playgroud)
TRIM和LTRIM函数似乎使用模式/字符匹配,而不是仅使用一次字符串匹配.有没有办法用这些功能或其他内置功能完成我想要的东西?
目前我认为我将不得不使用CASE语句在每个值的开头检查该前缀,如果它存在,则SUBSTR关闭,否则返回列不变.希望有一种更简单的方法.
我使用SQL Developer的GUI进行DDL更改.问题是,我需要将相同的更改应用于测试环境.我想知道其他人如何处理这个问题.目前我不得不手动编写ALTER语句以使测试环境与开发环境保持一致,但这很容易出错(两次做同样的事情).如果测试环境中没有重要数据,我通常会把所有东西都搞砸,从dev导出DDL脚本并在测试中从头开始运行它们.
我知道有些触发器可以存储每个DDL更改,但这是一个高度共享的环境,我想尽可能避免这种情况.
也许我应该手动编写DDL内容而不是使用GUI?
我想调用指定了OUT参数的PL/SQL存储过程,但我不关心返回值.我只关心程序执行成功,即没有抛出异常.
我是否必须在调用PL/SQL块中定义一个虚拟变量来接收out参数,即使我不想要它?它使我的调用代码变得混乱.
关于是否更少检查约束更好或更多的任何建议?如果有的话,他们应该如何分组?
假设我有3列VARCHAR2(1 BYTE),每列都是'T'/'F'标志.我想为每个列添加一个检查约束,指定只IN ('T', 'F')允许使用字符.
我应该有3个单独的检查约束,每列一个:
COL_1 IN ('T', 'F')
COL_2 IN ('T', 'F')
COL_3 IN ('T', 'F')
Run Code Online (Sandbox Code Playgroud)
或者一个检查约束:
COL_1 IN ('T', 'F') AND COL_2 IN ('T', 'F') AND COL_3 IN ('T', 'F')
Run Code Online (Sandbox Code Playgroud)
我的想法是最好将这三个分开,因为列在逻辑上彼此无关.唯一的情况是我会检查一个以上列的检查约束,如果一个值与另一个值之间存在某种关系,例如:
(PARENT_CNT > 0 AND PRIMARY_PARENT IS NOT NULL) OR (PARENT_CNT = 0 AND PRIMARY_PARENT IS NULL)
Run Code Online (Sandbox Code Playgroud) 这两个查询之间有什么区别?我一直拒绝跳过ANSI语法的潮流,因为我无法解开各种语法歧义.
是1)返回连接的产品,然后过滤掉那些重量> = 500的连接记录?并且2)过滤掉加入之前的那些?
2语法不好吗?我为什么要用它?
1:
SELECT SOMETHING
FROM FOO
INNER JOIN BAR
ON FOO.NAME = BAR.NAME
WHERE BAR.WEIGHT < 500
Run Code Online (Sandbox Code Playgroud)
2:
SELECT SOMETHING
FROM FOO
INNER JOIN BAR
ON FOO.NAME = BAR.NAME AND BAR.WEIGHT < 500
Run Code Online (Sandbox Code Playgroud) 有时我看到Oracle数据库的名称SOMEDB和我看到的其他时间一样SOMEDB.WORLD.我可以互换使用它们,没有明显的差别.这个.WORLD部分是什么意思?是否WORLD有任何特定含义,或者它只是恰好使用的任意字符串?我也见过其他扩展.
我有一个启用Ajax的CRUD应用程序.如果我显示数据库中的记录,则会显示每列的记录值,包括其主键.
对于绑定到页面上按钮的Ajax操作,我可以通过在呈现HTML服务器端时将ID直接打印到其onclick函数来设置其调用.例如,为了保存对记录的更改,我可以使用如下按钮,其中"123"是记录的主键.
<button type="button" onclick="saveRecord('123')">Save</button>
Run Code Online (Sandbox Code Playgroud)
有时我有Javascript生成HTML和Javascript的页面.在某些情况下,主密钥在代码中的该位置自然不可用.在这些情况下,我采用了一个快捷方式并生成了这样的按钮,从一个恰好在屏幕上显示的地方获取主键以供视觉消费:
...
<td>Primary Key: </td>
<td><span id="PRIM_KEY">123</span></td>
...
<button type="button" onclick="saveRecord(jQuery('#PRIM_KEY').text())">DoSomething</button>
Run Code Online (Sandbox Code Playgroud)
这肯定有效,但基于文本的值驱动数据库查询似乎是错误的,其目的是用户消费而不是方法消耗.我可以通过向各种方法添加一系列附加参数来解决这个问题,以便在最终需要时引入主键,但这看起来也很笨拙.
解决这个问题的最自然的方法是简单地将所有当前存在于外部文件中的Javascript置于<head>页面中.通过这种方式,我可以生成自定义Javascript方法,而无需传递尽可能多的参数.
除了可读性之外,我很难看到外部存储Javascript有什么好处.似乎它使得HTML/DOM和Javascript之间已经很弱的联姻更加遥远.
我看到有些人建议我将Javascript保留为外部,但是在页面本身上设置了各种"自定义"变量,例如,在PHP中:
<script type="text/javascript">
var primaryKey = <?php print $primaryKey; ?>;
</script>
<script type="text/javascript" src="my-external-js-file-depending-on-primaryKey-being-set.js"></script>
Run Code Online (Sandbox Code Playgroud)
这比仅仅将所有Javascript放在页面上更好吗?HTML和Javascript仍然在很大程度上依赖于彼此.
我有一个遗留表,它的自然键的一部分是名为 的列<table_name>_IDENTIFIER,创建一个名为 的代理键似乎会令人困惑<table_name>_ID,ID所以我倾向于命名它SURROGATE_KEY。我的所有其他表都使用该<table_name>_ID语法。还有更好的建议吗?
我有一个加载结果的搜索页面.每行旁边都有一个"删除"按钮,我想使用特定于该行的一些参数在我的页面上触发特定的Javascript函数.
最好是将函数调用直接放入生成的HTML中,例如,onclick="deleteFunc(<params from results array>);"还是应该附加jQuery click事件?我一直在选择后者,但在这种情况下,我不确定最好的方法.
我可以以某种方式将事件附加到某些HTML,即使它尚未添加到页面中吗?如果没有,我将不得不将所有结果添加到页面,包括搜索结果中每行的数组索引,然后将click事件附加到按钮,同时使用我存储的索引从原始数组访问该行的参数隐藏的HTML字段.这似乎是很多工作重新关联所有内容,当我有一个点,我构建HTML,其中我有所有特定行删除按钮所需的参数.
假设我使用jQuery的click事件,是否有内存耗尽的危险?我可能会有一千行回来.如果是这样,当内存耗尽时会发生什么?
另一种选择是将每个数组行的JSON序列化为删除按钮旁边的隐藏字段,然后我可以检索该字段.看起来这样会更有效,但也看起来很难看.
我想使用刷新的物化视图ON COMMIT。我的支持视图通过 DB Link 连接本地数据库中的两个表和远程数据库中的一个表。如何仅在对两个本地表之一进行更改时才刷新视图?
还有其他方法可以解决这个问题吗?我可以让物化视图只连接两个本地表并为远程数据库中的列设置 NULL,然后在插入/更新物化视图时使用触发器来填充这些字段吗?或者物化视图的更新是否传播回源表?
我正在做这样的事情:
SELECT LOC1.ID, LOC1.NAME, LOC2.PRICING_TYPE, REM1.PURCHASING_ID
FROM LOCAL_TABLE_A LOC1, LOCAL_TABLE_B LOC2, REMOTE_TABLE@SOMEDB.WORLD REM1
WHERE LOC1.ID = LOC2.MASTER_ID
AND LOC1.REM_ID = REM1.ID
AND LOC2.YEAR = REM1.YEAR
Run Code Online (Sandbox Code Playgroud)
这REMOTE_TABLE只是与两个本地表相关的信息的查找表。它不应该在这里驱动任何东西,我只希望物化视图在LOCAL_TABLE_AOR LOCAL_TABLE_BCHANGE 时更新。
我正在做:
select * from mytable y
where y.year = (select max(yi.year)
from mytable yi
where yi.person = y.person)
Run Code Online (Sandbox Code Playgroud)
从性能方面来看,这是好还是坏:
select y.* from mytable y
left outer join mytable y2
on y.year < y2.year
and y.person = y2.person
where y2.year is null
Run Code Online (Sandbox Code Playgroud)
解释计划/轶事证据是不确定的,所以我想知道一般情况下一个是否优于另一个.
我正在尝试在Javascript中使用原型继承.下面我的代码的问题是,当单击按钮并被MyNamespace.MyObj.myEventHandler调用时,值this不是实例MyNamespace.MyObj,而是单击的按钮.
我构建错误的东西(有更好的方法)吗?我可以以某种方式确保这this是对象的实例而不是调用者按钮吗?
var MyNamespace.MyObj = function(myform) {
this.myform = myform;
jQuery('.mybutton', this.myform).click(this.myEventHandler);
};
MyNamespace.MyObj.prototype = {
myEventHandler: function() {
this.myform.get(0).submit();
}
};
jQuery(document).ready(function() {
new MyNamespace.MyObj(jQuery('#myform'));
});
Run Code Online (Sandbox Code Playgroud)
这只是我用来学习原型继承的一个非常愚蠢的例子.我意识到上面代码的实际功能可以简单地在jQuery中完成,或者我可以使用对象文字或模块模式 - 但我真的只是对学习原型继承而不是在此时实现特定函数感兴趣.
我有应用程序代码,在本地数据库中插入记录,在远程数据库中插入记录(通过Oracle数据库链接).当我提交这个分布式事务时,它保证本地和远程数据库都将提交或同时回滚,或者远程可能提交但是本地提交会失败(反之亦然)?