oracle 更新记录语句,Oracle语句自动判断是要更新记录还是要插入记录
最近有一个需求,要做站内的关键词搜索。关键词要保存到Oracle的表,如果表里没有该记录就新增,如果有记录就将搜索次数加1。虽然看似简单,可写SQL时却不知从何下手。找了一下,原来是这样写法的。记录一下。
MERGE INTO KEYWORD T1
USING (SELECT :NAME AS NAME,:PIN_YIN AS PIN_YIN,:PIN_YIN_FIRST AS PIN_YIN_FIRST,1 As TIMES FROM dual) T2
ON (T1.NAME=T2.NAME)
WHEN MATCHED THEN
UPDATE SET T1.TIMES = T1.TIMES + 1
WHEN NOT MATCHED THEN
INSERT(NAME,PIN_YIN,PIN_YIN_FIRST,TIMES) VALUES(T2.NAME,T2.PIN_YIN,T2.PIN_YIN_FIRST,T2.TIMES)
另外站内的搜索关键词高亮脚本如下
//定义的配置
Keyword = {
//如果配置,则只搜索ID为此的元素,否则搜索整个BODY
elementid: 'content',
//是否匹配整个单词
exact: false,
//最大的搜索节点,避免文档过大时的假死
max_nodes: 1000,
//是否在加载时调用
onload: true,
//样式的名称
style_name: 'keyword',
//样式是否有后缀,true则可以使不同的关键词有不同的颜色
style_name_suffix: true,
//前一跳转页的地址,此参数只用于调试时
debug_referrer: '',
//用于指定固定要做高亮处理的关键词
light_key: '',
//用于指定固定要做链接处理的关键词
link_key: ''
};
// 网页处理的主函数
Keyword.main = function(strTask_type) {
// If 'debug_referrer' then we will use that as our referrer string
// instead.
// q是网页从何跳转来的URL地址,也可以自己定。q要做解码处理
// e是网页的内容或者是指定元素的内容
// lightkey是要加亮的关键字列表
// linkkey是要做链接的关键字列表
task_type = strTask_type;
var q = Keyword.debug_referrer ? Keyword.debug_referrer : document.referrer;
var e = document.getElementById(Keyword.elementid) ? document.getElementById(Keyword.elementid) : document.body;
q = decodeURIComponent(q);
//高度处理
var lightkey = Keyword.GetLightKeyList(q);
if (lightkey && e)
{
Keyword.lightElement(e, lightkey);
}
//链接处理
var linkkey = Keyword.GetLinkKeyList(q);
if (linkkey && e)
{
Keyword.linkElement(e, linkkey,strTask_type);
}
};
// 返回要加亮的关键字列表
Keyword.GetLightKeyList = function(referrer) {
var query = null;
if (referrer.match(/^.*key=([^&]+)&?.*$/i)){
query = RegExp.$1;
}
query = query + " " + Keyword.light_key;
if (query){
query = query.replace(//'|"/g, '');
query = query.split(/[/s,/(,/),/|,-,/+/.]+/);
}
return query;
};
//返回要加链接的关键字列表
Keyword.GetLinkKeyList = function(referrer) {
//此处从网页控件得到固定要做链接处理的关键词
try
{
Keyword.link_key = document.form1.txb_CommonKeyWord.value;
}
catch(err)
{
}
var query = null;
if (referrer.match(/^.*link=([^&]+)&?.*$/i)){
query = RegExp.$1;
}
query = query + " " + Keyword.link_key;
if (query){
query = query.replace(//'|"/g, '');
query = query.split(/[/s,/(,/),/|,-,/+/.]+/);
}
return query;
};
// 设置高亮
Keyword.lightElement = function(elm, lightkey) {
if (!lightkey || elm.childNodes.length == 0)
return;
var qreLight = new Array();
for (var i = 0; i < lightkey.length; i ++) {
lightkey[i] = lightkey[i].toLowerCase();
if (Keyword.exact)
qreLight.push('//b'+lightkey[i]+'//b');
else
qreLight.push(lightkey[i]);
}
qreLight = new RegExp(qreLight.join("|"), "i");
var stylemapper = {};
for (var i = 0; i < lightkey.length; i ++) {
if (Keyword.style_name_suffix)
stylemapper[lightkey[i]] = Keyword.style_name+(i % 5);
else
stylemapper[lightkey[i]] = Keyword.style_name+0;
}
var textproc = function(node) {
var match = qreLight.exec(node.data);
if (match) {
var val = match[0];
var k = '';
var node2 = node.splitText(match.index);
var node3 = node2.splitText(val.length);
var span = node.ownerDocument.createElement('SPAN');
node.parentNode.replaceChild(span, node2);
span.className = stylemapper[val.toLowerCase()];
span.appendChild(node2);
return span;
}
else{
return node;
}
};
Keyword.walkElements(elm.childNodes[0], 1, textproc);
};
// 设置链接
Keyword.linkElement = function(elm, linkkey) {
if (!linkkey || elm.childNodes.length == 0)
return;
var qreLink = new Array();
for (var i = 0; i < linkkey.length; i ++) {
linkkey[i] = linkkey[i].toLowerCase();
if (Keyword.exact)
qreLink.push('//b'+linkkey[i]+'//b');
else
qreLink.push(linkkey[i]);
}
qreLink = new RegExp(qreLink.join("|"), "i");
var textproc = function(node) {
var match = qreLink.exec(node.data);
if (match) {
var val = match[0];
var k = '';
var node2 = node.splitText(match.index);
var node3 = node2.splitText(val.length);
var link = node.ownerDocument.createElement('A');
node.parentNode.replaceChild(link, node2);
link.href = "FullTextSearch.aspx?searchtype=txt&key=" + val;
link.title = "搜索“" + val + "”";
link.target="_blank";
link.appendChild(node2);
return link;
}
else{
return node;
}
};
Keyword.walkElements(elm.childNodes[0], 1, textproc);
};
//用于对网页元素的遍历
Keyword.walkElements = function(node, depth, textproc) {
var skipre = /^(script|style|textarea)/i;
var count = 0;
while (node && depth > 0) {
count ++;
if (count >= Keyword.max_nodes) {
var handler = function() {
Keyword.walkElements(node, depth, textproc);
};
setTimeout(handler, 50);
return;
}
if (node.nodeType == 1) { // ELEMENT_NODE
if (!skipre.test(node.tagName) && node.childNodes.length > 0) {
node = node.childNodes[0];
depth ++;
continue;
}
} else if (node.nodeType == 3) { // TEXT_NODE
node = textproc(node);
}
if (node.nextSibling) {
node = node.nextSibling;
} else {
while (depth > 0) {
node = node.parentNode;
depth --;
if (node.nextSibling) {
node = node.nextSibling;
break;
}
}
}
}
};
oracle 更新记录语句,Oracle语句自动判断是要更新记录还是要插入记录相关推荐
- 红旗linux怎么更新,红旗linux7.0下自动更新firefox
今天在红旗官方论坛看到有人提问--如何更新firefox?方法有几种,不过,据我自己的使用体会,总结出一简单实用的自动更新的办法.既不用命令,还不影响速度.现共享出来,与大家交流.如果您有更好的办法, ...
- html自动识别pc手机跳转,网站根据访问客户端设备UA(PC和手机移动)自动判断跳转代码...
网站根据访问客户端设备UA(PC和手机移动)自动判断跳转代码 以下代码是插入到手机模板中 var system = { win: false, mac: false, xll: false }; va ...
- oracle数据库定时每天自动备份语句,Oracle数据库定时自动备份
Oracle数据库定时自动备份批处理代码(Windows) 这是最近写的一个Oracle数据库自动备份的批处理,经过测试正常运行,记录如下.包括两部分,逻辑备份和冷备份,如有不完整之处,还往看到本文的 ...
- oracle删除唯一索引sql语句_高级SQL之在选择语句中使用更新和删除
点击蓝字关注我吧 [本文详细介绍了数据库中在选择语句中使用更新和删除的方法,欢迎读者朋友们阅读.转发和收藏!] 1 基本概念 1.1 SQL UPDATE 语句 Update 语句 Update 语句 ...
- Oracle数据库基础知识+sql语句练习
文章目录 四.数据库 4.1 Oracle 准备知识 SQL基本分类 Oracle数据类型 基本用法 事务 事务特性: 隔离性问题: 隔离级别: 锁 锁的介绍 锁的分类 锁的类型 锁等待和死锁 查看是 ...
- oracle 停止触发器语句,oracle触发器语句
ORACLE中触发器的判断IF语句 加一行 NULL 即可例如:SQL> DECLARE 2 testvalue INT; 3 BEGIN 4 testvalue := 200; 5 6 IF ...
- oracle如何规则显示,Oracle语句优化规则汇总
Oracle sql 性能优化调整 1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置 ...
- oracle将千万行查询优化到一秒内,oracle下一条SQL语句的优化过程(比较详细)
oracle下一条SQL语句的优化过程(比较详细) 更新时间:2010年04月14日 23:56:49 作者: 很简单的一次调整,语句加了适当的索引后性能就有大幅的提升.当时看到这条语句的时候,第 ...
- Oracle EBS 常用表 查询语句
ORACLE EBS常用表查询语句 1. OU.库存组织 SELECT hou.organization_id ou_org_id, --org_id hou.name ou ...
最新文章
- condest--1-范数的条件数估计
- 在VMware虚拟机中进行Ghost网刻不成功的几点提示
- HTML经典模板总结(地址)
- 2020蓝桥杯省赛---java---B---5(排序)
- WPF应用程序内存泄漏的一些原因
- mysql视图存储_Mysql 视图、存储过程以及权限控制
- administrator
- ModelArts的雪中送炭,让我拿下CCF BDCI华为Severless工作负载预测亚军
- frame中src怎么设置成一个变量_OpenCV图像人脸检测及视频中的人脸检测(附源码)...
- cmd输入pip报错_Houdini安装外部python库(pip)
- vnc服务器注销了怎么登陆_vnc登录服务器常见问题
- oracle数据库插入多表,在Oracle数据库中插入嵌套表
- 关于百度地图js api的getCurrentPosition定位不准确的解决方法
- jsp- el表达式
- android package_added 界面更新,如何在Android Oreo上注册ACTION_PACKAGE_ADDED和ACTION_PACKAGE_REMOVED?...
- 58 同城 post 参数分析之 eval 加密
- java 实现VMware虚拟机创建
- 怎么把foxmail的邮件和服务器同步,foxmail客户端导入邮件但是网页端没有同步,怎么处理呢[foxmail]-上海腾曦网络...
- 惠普288G6台式机如何在 BIOS中设置通电自动开机
- 主成分分析碎石图_用户体验数据的多维度处理:PC A法及碎石图