最近有一个需求,要做站内的关键词搜索。关键词要保存到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语句自动判断是要更新记录还是要插入记录相关推荐

  1. 红旗linux怎么更新,红旗linux7.0下自动更新firefox

    今天在红旗官方论坛看到有人提问--如何更新firefox?方法有几种,不过,据我自己的使用体会,总结出一简单实用的自动更新的办法.既不用命令,还不影响速度.现共享出来,与大家交流.如果您有更好的办法, ...

  2. html自动识别pc手机跳转,网站根据访问客户端设备UA(PC和手机移动)自动判断跳转代码...

    网站根据访问客户端设备UA(PC和手机移动)自动判断跳转代码 以下代码是插入到手机模板中 var system = { win: false, mac: false, xll: false }; va ...

  3. oracle数据库定时每天自动备份语句,Oracle数据库定时自动备份

    Oracle数据库定时自动备份批处理代码(Windows) 这是最近写的一个Oracle数据库自动备份的批处理,经过测试正常运行,记录如下.包括两部分,逻辑备份和冷备份,如有不完整之处,还往看到本文的 ...

  4. oracle删除唯一索引sql语句_高级SQL之在选择语句中使用更新和删除

    点击蓝字关注我吧 [本文详细介绍了数据库中在选择语句中使用更新和删除的方法,欢迎读者朋友们阅读.转发和收藏!] 1 基本概念 1.1 SQL UPDATE 语句 Update 语句 Update 语句 ...

  5. Oracle数据库基础知识+sql语句练习

    文章目录 四.数据库 4.1 Oracle 准备知识 SQL基本分类 Oracle数据类型 基本用法 事务 事务特性: 隔离性问题: 隔离级别: 锁 锁的介绍 锁的分类 锁的类型 锁等待和死锁 查看是 ...

  6. oracle 停止触发器语句,oracle触发器语句

    ORACLE中触发器的判断IF语句 加一行 NULL 即可例如:SQL> DECLARE 2 testvalue INT; 3 BEGIN 4 testvalue := 200; 5 6 IF ...

  7. oracle如何规则显示,Oracle语句优化规则汇总

    Oracle sql 性能优化调整 1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置 ...

  8. oracle将千万行查询优化到一秒内,oracle下一条SQL语句的优化过程(比较详细)

    oracle下一条SQL语句的优化过程(比较详细) 更新时间:2010年04月14日 23:56:49   作者: 很简单的一次调整,语句加了适当的索引后性能就有大幅的提升.当时看到这条语句的时候,第 ...

  9. Oracle EBS 常用表 查询语句

    ORACLE EBS常用表查询语句 1.  OU.库存组织 SELECT hou.organization_id ou_org_id,           --org_id   hou.name ou ...

最新文章

  1. condest--1-范数的条件数估计
  2. 在VMware虚拟机中进行Ghost网刻不成功的几点提示
  3. HTML经典模板总结(地址)
  4. 2020蓝桥杯省赛---java---B---5(排序)
  5. WPF应用程序内存泄漏的一些原因
  6. mysql视图存储_Mysql 视图、存储过程以及权限控制
  7. administrator
  8. ModelArts的雪中送炭,让我拿下CCF BDCI华为Severless工作负载预测亚军
  9. frame中src怎么设置成一个变量_OpenCV图像人脸检测及视频中的人脸检测(附源码)...
  10. cmd输入pip报错_Houdini安装外部python库(pip)
  11. vnc服务器注销了怎么登陆_vnc登录服务器常见问题
  12. oracle数据库插入多表,在Oracle数据库中插入嵌套表
  13. 关于百度地图js api的getCurrentPosition定位不准确的解决方法
  14. jsp- el表达式
  15. android package_added 界面更新,如何在Android Oreo上注册ACTION_PACKAGE_ADDED和ACTION_PACKAGE_REMOVED?...
  16. 58 同城 post 参数分析之 eval 加密
  17. java 实现VMware虚拟机创建
  18. 怎么把foxmail的邮件和服务器同步,foxmail客户端导入邮件但是网页端没有同步,怎么处理呢[foxmail]-上海腾曦网络...
  19. 惠普288G6台式机如何在 BIOS中设置通电自动开机
  20. 主成分分析碎石图_用户体验数据的多维度处理:PC A法及碎石图

热门文章

  1. 互动整合营销_今天,我们谈谈展会的整合营销!
  2. uniapp光标自动定义到文本框_解决这3个问题,你就敢使用自动编号了
  3. 计算机二级2021辅导书,2021该如何准备计算机二级考试?
  4. linux环境-docker安装rabbitmq
  5. import Vue form 'vue’的意思
  6. 为什么说语言是思维的最有效的工具
  7. apue 2013-03-14
  8. Discuz!NT 模板机制分析(转)
  9. Go语言中Goroutine与线程的区别
  10. 团队开发项目--校园知网 nabcd 需求分析