oracle相关问题的解决及页面tomcat相关.docx
《oracle相关问题的解决及页面tomcat相关.docx》由会员分享,可在线阅读,更多相关《oracle相关问题的解决及页面tomcat相关.docx(13页珍藏版)》请在冰豆网上搜索。
oracle相关问题的解决及页面tomcat相关
遇到的问题:
1、ORA-00979不是groupby表达式
当一个SQL语句中含有聚合函数时,(比如:
count(),sum(),avg()等等)并且SELECT后面又有不是聚合函数的字段,就必须要GROUPBY不是聚合函的所有字段,比如你的SQL语句应该写成:
select b.id0000,b.xming0,sum(salary)
fromEmployeea,Salaryb
wherea.id0000=b.id0000
groupbyb.id0000,b.xming0
这样就不会错啦
.2、在oracle中,如何将时间类型转换成字符类型?
to_char(sysdate,'yyyy-mm-ddhh24:
mi:
ss')
3、oracle实现按天,周,月,季度,年查询统计数据
//按天统计
selectcount(dataid)as每天操作数量,sum()
from
where
groupbytrunc(createtime,'DD'))
//按自然周统计
selectto_char(date,'iw'),sum()
from
where
groupbyto_char(date,'iw')
//按自然月统计
selectto_char(date,'mm'),sum()
from
where
groupbyto_char(date,'mm')
//按季统计
selectto_char(date,'q'),sum()
from
where
groupbyto_char(date,'q')
//按年统计
selectto_char(date,'yyyy'),sum()
from
where
groupbyto_char(date,'yyyy')
4.将两个记录集的内容合并
UNION运算符使您得以将两个或多个SELECT语句的结果组合成一个结果集。
SELECT*FROMTable1
UNION
SELECT*FROMTable2
UNION运算符
将两个或更多查询的结果组合为单个结果集,该结果集包含联合查询中的所有查询的全部行。
这与使用联接组合两个表中的列不同。
使用UNION组合两个查询的结果集的两个基本规则是:
所有查询中的列数和列的顺序必须相同。
数据类型必须兼容。
语法
{|()}
UNION[ALL]
)
[UNION[ALL])
[...n]]
参数
|()
是查询规范或查询表达式,用以返回与另一个查询规范或查询表达式所返回的数据组合的数据。
作为UNION运算一部分的列定义可以不相同,但它们必须通过隐性转换实现兼容。
下表说明数据类型与相应(ith)列的选项的比较规则。
ith列的数据类型结果表中ith列的数据类型
非数据兼容类型(数据转换不由Microsoft®SQLServer™隐性处理)。
SQLServer返回的错误。
长度为L1和L2的固定长度char。
长度与L1和L2中较长的那个相等的固定长度char。
长度为L1和L2的固定长度binary。
长度与L1和L2中较长的那个相等的固定长度binary。
任一列或两列都是可变长度char。
长度与为ith列指定的最大长度相等的可变长度char。
任一列或两列都是可变长度binary。
长度与为ith列指定的最大长度相等的可变长度binary。
两列都是数字数据类型(如smallint、int、float、money)。
与两列的最大精度相等的数据类型。
例如,如果表A的ith列是int类型,表B的ith列是float类型,则ith列在结果表中的数据类型是float,因为float比int更精确。
两列的描述都指定NOTNULL。
指定NOTNULL。
UNION
指定组合多个结果集并将其作为单个结果集返回。
ALL
在结果中包含所有的行,包括重复行。
如果没有指定,则删除重复行。
5、JS文本框验证
写一个JS代码,验证文本框最长为30字符怎么写啊?
(1)
functionvalidate(obj)
{if(obj.value)
{
if(obj.value.length>30)
{
alert("长度不能大于30");
returnfalse;
}
}
}
(2)
这样就可以了
6、从页面得到的字符类型转换成长整形
本来语句是这些:
StringuserId=request.getParameter("UserId");
if(userId==null)
userId="";
user.setUserId(userId);
user.searchStu();
现在我需要把userId转成int型的
那下面的那些语句都该怎么写呢?
Integer.parseInt(userId);//转int
String.valueOf(userId);//转回string
//后面的id你用string设置为空了,但是每一个实体的id必须有的。
所以我不太了解您要做什么。
实在不行设置为0好了。
个人认为您的类需要重新设计一下。
如果懒得设计就用上面给您的两个方法来回转换吧。
这位朋友,冒昧对你的程序分析分析,有说错的地方还请不要见怪呀。
Appletapplet=newApplet();
Appletuser=newApplet();
StringuserId=applet.getParameter("UserId");
//StringuserId=request.getParameter("UserId");//你这一句要调用的是getParameter()方法,我运行时是无法调用,因为Request是一个类,即使你创建了request对象,也找不到getParameter()方法,这个方法应该在Applet这个类中能够找的到,上面我已经定义了。
还有就是下面setUserId()和searchStu()方法应该是你自己定义的吧。
if(userId==null)
userId="";
user.setUserId(userId);
user.searchStu();
Integer.parseInt(userId);
//parseInt()这个方法是将String型转化为int型的。
在API中你可以搜一下,看看具体上面怎么说。
String.valueOf(userId);
//valueOf()这个方法是将int型转回String型。
7、trunc
1.TRUNC(fordates)
TRUNC函数为指定元素而截去的日期值。
其具体的语法格式如下:
TRUNC(date[,fmt])
其中:
date一个日期值
fmt日期格式,该日期将由指定的元素格式所截去。
忽略它则由最近的日期截去
下面是该函数的使用情况:
TRUNC(TO_DATE('24-Nov-199908:
00pm'),'dd-mon-yyyyhh:
miam')
='24-Nov-199912:
00:
00am'
TRUNC(TO_DATE('24-Nov-199908:
37pm','dd-mon-yyyyhh:
miam'),'hh')='24-Nov-199908:
00:
00am'
trunc(sysdate,'yyyy')--返回当年第一天.
trunc(sysdate,'mm')--返回当月第一天.
trunc(sysdate,'d')--返回当前星期的第一天.
trunc(sysdate,'dd')--返回当前年月日
2.TRUNC(fornumber)
TRUNC函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。
其具体的语法格式如下
TRUNC(number[,decimals])
其中:
number待做截取处理的数值
decimals指明需保留小数点后面的位数。
可选项,忽略它则截去所有的小数部分
下面是该函数的使用情况:
TRUNC(89.985,2)=89.98
TRUNC(89.985)=89
TRUNC(89.985,-1)=80
注意:
第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。
与取整类似,比如参数为1即取整到十分位,如果是-1,则是取整到十位,以此类推。
8、myEclipse中如何显示行数
Window->Preferences->General->Editors->TextEditors:
showlinenumber
9、JavaScriptsplit()方法
JavaScriptString对象参考手册
定义和用法
split()方法用于把一个字符串分割成字符串数组。
语法
stringObject.split(separator,howmany)
参数
描述
separator
必需。
字符串或正则表达式,从该参数指定的地方分割stringObject。
howmany
可选。
该参数可指定返回的数组的最大长度。
如果设置了该参数,返回的子串不会多于这个参数指定的数组。
如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
返回值
一个字符串数组。
该数组是通过在separator指定的边界处将字符串stringObject分割成子串创建的。
返回的数组中的字串不包括separator自身。
但是,如果separator是包含子表达式的正则表达式,那么返回的数组中包括与这些子表达式匹配的字串(但不包括与整个正则表达式匹配的文本)。
提示和注释
注释:
如果把空字符串("")用作separator,那么stringObject中的每个字符之间都会被分割。
注释:
String.split()执行的操作与Array.join执行的操作是相反的。
实例
例子1
在本例中,我们将按照不同的方式来分割字符串:
varstr="Howareyoudoingtoday?
"
document.write(str.split("")+"
")
document.write(str.split("")+"
")
document.write(str.split("",3))
输出:
How,are,you,doing,today?
H,o,w,,a,r,e,,y,o,u,,d,o,i,n,g,,t,o,d,a,y,?
How,are,you
例子2
在本例中,我们将分割结构更为复杂的字符串:
"2:
3:
4:
5".split(":
")//将返回["2","3","4","5"]
"|a|b|c".split("|")//将返回["","a","b","c"]
例子3
使用下面的代码,可以把句子分割成单词:
varwords=sentence.split('')
或者使用正则表达式作为separator:
varwords=sentence.split(/\s+/)
例子4
如果您希望把单词分割为字母,或者把字符串分割为字符,可使用下面的代码:
"hello".split("")//可返回["h","e","l","l","o"]
若只需要返回一部分字符,请使用howmany参数:
"hello".split("",3)//可返回["h","e","l"]
10.java:
String类的matches()方法
match()的参数一般为正则表达式,现在两个正则表达式,可以试用
正则表达式一:
可以适用任何形式的字符串,
其中LikeType是要匹配的字符串,patten是生成的正则表达式,sourceStr是已有字符串,判断sourceStr是否满足LikeType的正则表达式
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
StringlikeType="23";
Stringpattern="[a-zA-Z0-9]*["+likeType+"]{1}[a-zA-Z0-9]*";
StringsourceStr="adfjaslfj23ldfalsf";
System.out.println(sourceStr.matches(likeType));
}
正则表达式二:
固定位置的字符串匹配,理解同上,只是正则表达式的不同
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
StringlikeType="%%%23%%%*";
StringsourceStr="423236664";
likeType=likeType.replaceAll("%","\\\\d").replaceAll("\\*","\\\\d\\*");
System.out.println(likeType);
System.out.println(sourceStr.matches(likeType));
}
match的方法比较简单,但绝对实用,所以要掌握用法,正则表达式的写法尤其重要。
11.JavaScriptindexOf()方法
JavaScriptString对象参考手册
定义和用法
indexOf()方法可返回某个指定的字符串值在字符串中首次出现的位置。
语法
stringObject.indexOf(searchvalue,fromindex)
参数
描述
searchvalue
必需。
规定需检索的字符串值。
fromindex
可选的整数参数。
规定在字符串中开始检索的位置。
它的合法取值是0到stringObject.length-1。
如省略该参数,则将从字符串的首字符开始检索。
说明
该方法将从头到尾地检索字符串stringObject,看它是否含有子串searchvalue。
开始检索的位置在字符串的fromindex处或字符串的开头(没有指定fromindex时)。
如果找到一个searchvalue,则返回searchvalue的第一次出现的位置。
stringObject中的字符位置是从0开始的。
提示和注释
注释:
indexOf()方法对大小写敏感!
注释:
如果要检索的字符串值没有出现,则该方法返回-1。
实例
在本例中,我们将在"Helloworld!
"字符串内进行不同的检索:
varstr="Helloworld!
"
document.write(str.indexOf("Hello")+"
")
document.write(str.indexOf("World")+"
")
document.write(str.indexOf("world"))
以上代码的输出:
0
-1
6
12.tomcat乱码解决方案
--gbk或者gb2312或者utf-8-->
ignore
true
Encoding
/*
*注意filter元素要放在所有web.xml元素之前。
(2)Get方法的处理
tomcat对post和get的处理方法不一样,所以过滤器不能解决get的乱码问题,它需要在其他地方设置。
打开\conf目录下server.xml文件,找到对8080端口进行服务的Connector组件的设置部分,给这个组件添加一个属性:
URIEncoding="GBK"。
修改后的Connector设置为:
maxThreads="150"minSpareThreads="25"maxSpareThreads="75"
enableLookups="false"redirectPort="8443"acceptCount="100"connectionTimeout="20000"disableUploadTimeout="true"URIEncoding="GBK"/>
*注意修改后重新启动tomcat才能起作用。
3)数据库应用的乱码,本文还是以mysql为例
(1)修改配置文件\my.init
将default-character-set=latin1修改为default-character-set=gbk
(2)对接受的中文字符重新编码,例
Stringname=requset.getParameter("name");
name=newString(name.getBytes("gbk"),"iso8859-1");
4)tomcat5.x的include页面乱码
为了能让tomcat5.x能像tomcat4那样处理include页面,需要修改项目web-info/web.xml文件,把默认的字符集设置成gbk/gb2312就可以了,如:
SpecialpropertygroupforJSPConfigurationJSPexample.
JSPConfiguration
*.jsp
true
GBK
false
/include/prelude.jspf
13.instanceof
简介
instanceof是Java的一个二元操作符,和==,>,<是同一类东西。
由于它是由字母组成的,所以也是Java的保留关键字。
它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。
可以用在继承中的子类的实例是否为父类的实现
编辑本段示例
举个例子:
Strings="IAManObject!
";
booleanisObject=sinstanceofObject;
我们声明了一个String对象引用,指向一个String对象,然后用instanceof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为true。
instanceof有一些用处。
比如我们写了一个处理账单的系统,其中有这样三个类:
publicclassBill{//省略细节}
publicclassPhoneBillextendsBill{//省略细节}
publicclassGasBillextendsBill{//省略细节}
在处理程序里有一个方法,接受一个Bill类型的对象,计算金额。
假设两种账单计算方法不同,而传入的Bill对象可能是两种中的任何一种,所以要用instanceof来判断:
publicdoublecalculate(Billbill){
if(billinstanceofPhoneBill){
//计算电话账单
}
if(billinstanceofGasBill){
//计算燃气账单
}
...
}
这样就可以用一个方法处理两种子类。
然而,这种做法通常被认为是没有好好利用面向对象中的多态性。
其实上面的功能要求用方法重载完全可以实现,这是面向对象编程应有的做法,避免回到结构化编程模式。
只要提供两个名字和返回值都相同,接受参数类型不同的方法就可以了:
publicdoublecalculate(PhoneBillbill){
//计算电话账单
}
publicdoublecalculate(GasBillbill){
/