仓酷云

标题: MYSQL网页编程之ORACLE中字符串对照 [打印本页]

作者: 仓酷云    时间: 2015-1-16 22:29
标题: MYSQL网页编程之ORACLE中字符串对照
采用DBaaS解决方案,他们也可以使用同大企业一样的技术。在大型组织中,DBaaS可以提供部门级解决MySQL学习教程,而无需IT部门和采购部门的介入,提供更快和更容易的方法来实现小型解决方案。oracle|对照|字符串在ORACLE中,将空字符串视为NULL,任何值与NULL对照了局都为NULL。云云一来,在对照两个字符串的时分就会呈现不测。请看以下的例子:
DECLARE
iVARCHAR2(10):=NULL;
vVARCHAR2(10):=ABC;
BEGIN
IF(i=v)THEN
DBMS_OUTPUT.PUT_LINE(相称);
ELSE
DBMS_OUTPUT.PUT_LINE(不等);
ENDIF;
END;
请你用你伶俐的思想判别一下,了局应当是甚么?很简单就能够得出了局:不等。很好,你是对的。在SQLPLUS上运转的了局和你想的一样。那末我改一下程序,你再判别一下:
DECLARE
iVARCHAR2(10):=NULL;
vVARCHAR2(10):=ABC;
BEGIN
IF(iv)THEN
DBMS_OUTPUT.PUT_LINE(不等);
ELSE
DBMS_OUTPUT.PUT_LINE(相称);
ENDIF;
END;
看上往和第一个程序没有太年夜的不同,很简单就得出了局:不等。呵呵。你断定了局就是这个吗?那末请你在SQLPLUS测试一下,来考证你是准确的。很惋惜,准确的了局应当是:相称。是否是很惊奇?正如入手下手所说的:任何值与NULL对照了局都为NULL。即在第一个程序中的i=v对照的了局应当是NULL,而第二个程序中的iv对照的了局也是NULL。当IF布局中的前提为NULL时,将跳过以后的分支进进到ELSE大概是停止。不可吗?那你运转一下以下的程序将能够比及考证:
BEGIN
IF(NULL)THEN
DBMS_OUTPUT.PUT_LINE(NOTNULL);
ELSE
DBMS_OUTPUT.PUT_LINE(NULL);
ENDIF;
END;
了局输入的是:NULL。
那末应当如何准确的对照两个字符串呢?
起首我先说说怎样断定两个字符串相称(仍是用上边的两个变量i和v)。
1、当i和v都为NULL的时分,以为i和v相称。iISNULLANDvISNULL(不要写成如许:i=v。从上边的剖析我们能够晓得如许写的了局为NULL)。
2、当i和v中只要一个为NULL,一定不相称。
3、当i和v都不为NULL的时分,我们就能够用‘=’号来判别它们是不是相称。iISNOTNULLANDvISNOTNULLANDi=v。
依据以上三点,我们能够得出判别i和v相称的前提表达式:iISNULLANDvISNULLORiISNOTNULLANDvISNOTNULLANDi=v。
那末两个字符串不相称的前提表达式只必要判别相称的表达式为FALSE就能够了。
把判别两个字符串是不是相称的功效写成函数:
CREATEORREPLACEFUNCTIONISEQUAL
(
VAR1INVARCHAR2,
VAR2INVARCHAR2
)
RETURNNUMBER--0:不等1:相称-1:毛病
IS
IF(VAR1ISNULLANDVAR2ISNULLORVAR1ISNOTNULLANDVAR2ISNOTNULLANDVAR1=VAR2)THEN
RETURN1;
ELSE
RETURN0;
ENFIF;
BEGIN
EXCEPTION
WHENOTHERSTHEN
RETURN-1;
END;
以下上测试程序:
DECLARE
VAR1VARCHAR2(10):=NULL;
VAR2VARCHAR2(10):=A;
BEGIN
IF(isequal(VAR1,VAR2)=1)THEN
DBMS_OUTPUT.PUT_LINE(=);
ELSE
DBMS_OUTPUT.PUT_LINE();
ENDIF;
END;

RDBMS并非没有局限性。它们难以扩展,需要大量的资源来配置和维护,比如时间、硬件和人力。同样,它们往往遵循峰值性能模型,这就要求系统按照峰值容量来配置可用性,而不考虑典型的数据使用情况。
作者: 冷月葬花魂    时间: 2015-1-19 15:01
再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。
作者: 活着的死人    时间: 2015-1-26 23:57
习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。
作者: 飘灵儿    时间: 2015-2-5 01:27
你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。
作者: 不帅    时间: 2015-2-11 00:38
个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。
作者: 第二个灵魂    时间: 2015-3-1 19:10
发几份SQL课件,以飨阅者
作者: 深爱那片海    时间: 2015-3-10 22:30
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
作者: 变相怪杰    时间: 2015-3-17 11:24
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
作者: 灵魂腐蚀    时间: 2015-3-24 09:28
每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2