- 浏览: 233119 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
net_liu:
zxptian 写道楼主能把TransferFiles也贴出来 ...
c# Socket 文件的传输 -
zxptian:
楼主能把TransferFiles也贴出来分享下吗?
c# Socket 文件的传输
以下是管理访问SQL函数,各数据库差异的函数 由于不同数据库其Sql函数不同,这里用函数封装了这种差异:
/** * instr字符替换脚本(列名),暂时只支持iEnd为1的SQL Server脚本 * * @param sStr1 * oracle中为要搜索的表达式,SQL Server中为搜索表达式 * @param sStr2 * SQL Server中为要搜索的表达式,oracle中为搜索表达式 * @param iStart * 开始位置 * @param iEnd * 仅在Oracle中起作用 * @return */ public String sqlInstr(String sStr1, String sStr2, int iStart, int iEnd) { if (dbType == DB_ORA) return "instr(" + sStr1 + "," + sStr2 + "," + iStart + "," + iEnd + ")"; if (dbType == DB_SQL) { if (iStart < 0) { sStr1 = "REPLACE(REVERSE(" + sStr2 + "),REVERSE(" + sStr1 + ")," + sStr1 + ")"; } return "charindex(" + sStr2 + "," + sStr1 + " ,ABS(" + iStart + "))"; } if (dbType == DB_DB2) return "POSSTR(" + sStr1 + "," + sStr2 + ")";// db2不支持sStart return ""; }
/** * 把字符串转成日期格式 YYYY[token]MM[token]DD * * @param _stringDate * @return */ public String sqlFormatStringToDate(String _stringDate, String token) { String sql = ""; if (dbType == DB_ORA) { sql += "TO_date('" + _stringDate + "','YYYY" + token + "MM" + token + "DD')"; } else if (dbType == DB_SQL) { sql += "convert(datetime,'" + _stringDate+"')"; } else if (dbType == DB_DB2) { sql += "TO_date('" + _stringDate + "','YYYY" + token + "MM" + token + "DD')"; } else { // ERROR } return sql; } /** * 日期函数转换(处理列名) * * @param strColName * 要转换的列名或日期类型数据 * @param sFormat * 要转换的格式 * @param isColName * 标识是否是列名 * @return 返回字符串类型 */ public String sqlDateS(String strColName, String sFormat, boolean isColName) { if (isColName) { if (dbType == DB_ORA) { return "to_char(" + strColName + ",'" + sFormat + "')"; } else if (dbType == DB_SQL) return "CONVERT(VARCHAR(" + sFormat.length() + ")," + strColName + ",112)"; else if (dbType == DB_DB2) return "cast(" + strColName + " as VARCHAR(10))"; } else { return sqlDateS(strColName, sFormat); } return ""; } /** * 将字符列转为日期类型 * * @param strColName * 要转换的列名或日期类型数据 * @param sFormat * 要转换的格式 * @param isColName * 标识是否是列名 * @return 返回字符串类型 */ public String sqlSColToDate(String strColName, String sFormat) { if (dbType == DB_ORA) { return "to_date(" + strColName + ",'" + sFormat + "')"; } else if (dbType == DB_SQL) { return "cast(" + strColName + " as DateTime)"; } else if (dbType == DB_DB2) { return "cast(" + strColName + " as DateTime)"; } return ""; }
/** * 把字段或日期转成token格式 * * @param date * @return */ public String sqlFormatDate(String date, String token) { String SQL = ""; if (dbType == DB_ORA) { SQL += "TO_CHAR(" + date + ",'YYYY" + token + "MM" + token + "DD')"; } else if (dbType == DB_SQL) { if (token == "") { SQL += "convert(varchar(120),convert(datetime," + date + ") ,112)"; } else if (token == "/") { SQL += "convert(varchar(120),convert(datetime," + date + ") ,111)"; } else if (token == "-") { SQL += "convert(varchar(120),convert(datetime," + date + ") ,120)"; } else { SQL += "convert(varchar(120),convert(datetime," + date + ") ,112)"; } } else if (dbType == DB_DB2) { SQL += "TO_CHAR(" + date + ",'YYYY" + token + "MM" + token + "DD')"; } else { // ERROR } return SQL; } public String sqlFToDate (String date,String token) { String SQL = ""; if (dbType == DB_ORA) { SQL += "to_date('" + date + "')"; } else if (dbType == DB_SQL) { SQL += "convert(datetime,'" + date + "')"; } else if (dbType == DB_DB2) { SQL += "to_date('" + date + "')"; } else { // ERROR } return SQL;
/*
* 处理自增列
*/
public String SQLSEQUENCE(String que) {
if (dbType == DB_ORA)
return que + ".nextval, ";
else if (dbType == DB_SQL) {
return "";
} else if (dbType == DB_DB2)
return "NEXTVAL FOR " + que + ",";
return "";
}
/**
* 按日期返回星期几
*
* @param date
* @return
* @throws YssException
*/
public String getWeek(String date) throws YssException {
// date=sqlDateS(date,"yyyy-mm-dd");
if (dbType == DB_ORA)
return "to_char(" + date + ",'d')";
else if (dbType == DB_SQL)
return "DATEPART(wk," + date + ")";
else if (dbType == DB_DB2)
return "DAYOFWEEK(" + date + ")";
else
throw new YssException("数据库类型异常!");
}
/**
* 求指定日期在一年中是第几周
*
* @param date
* @return
* @throws YssException
*/
public String getWeekth(String date) throws YssException {
// date=sqlDateS(date,"yyyy-mm-dd");
if (dbType == DB_ORA)
return "to_char(" + date + ",'IW')";
else if (dbType == DB_SQL) {
return "DATEPART(week," + date + ")";
} else if (dbType == DB_DB2)
return "WEEK(" + date + ")";
else
throw new YssException("数据库类型异常!");
}
/**
* 日期在加减时不同数据库的处理
*
* @return
* @throws YssException
*/
public String getDay() throws YssException {
// date=sqlDateS(date,"yyyy-mm-dd");
if (dbType == DB_ORA)
return "+0";
else if (dbType == DB_SQL)
return "+0";
else if (dbType == DB_DB2)
return "day";
else
throw new YssException("数据库类型异常!");
}
/**
* 取日期的年份
*
* @param date
* @return
* @throws YssException
*/
public String getYear(String date) throws YssException {
// date=sqlDateS(date,"yyyy-mm-dd");
if (dbType == DB_ORA) {
Pattern p = Pattern.compile("^\\d{4}[-]{1}\\d{1,2}[-]{1}\\d{1,2}$");
Matcher m = p.matcher(date);// 正则匹配
if (m.matches())
return "to_number(to_char(to_date('" + date
+ "','yyyy-mm-dd'),'yyyy'))";
else
return "to_number(to_char(" + date + ",'yyyy'))";
} else if (dbType == DB_SQL)
return "DATENAME(year," + date + ")";
else if (dbType == DB_DB2)
return "YEAR(" + date + ")";
else
throw new YssException("数据库类型异常!");
}
/** 取模 */
public String sqlMod(String sStr1, String sStr2, boolean bAbs) {
if (dbType == DB_ORA)
return (bAbs ? "abs(" : "") + "mod(" + sStr1 + "," + sStr2 + ")"
+ (bAbs ? ")" : "");
if (dbType == DB_SQL)
return (bAbs ? "abs(" : "") + "(" + sStr1 + ") % (" + sStr2 + ")"
+ (bAbs ? ")" : "");
return (bAbs ? "abs(" : "") + "mod(" + sStr1 + ", " + sStr2 + ")"
+ (bAbs ? ")" : "");
}
/** sqlTrim */
public String sqlTrim(String sStr) {
if (dbType == DB_ORA)
return "Trim(" + sStr + ")";
else
return "RTrim(LTrim(" + sStr + "))";
}
/**
* 参看Oracle的NVL(Sqlserver的isnull)函数
*/
public String sqlIsNull(String str1, String str2) {
if (dbType == DB_ORA)
return "NVL(" + str1 + "," + str2 + ")";
if (dbType == DB_SQL)
return "IsNull(" + str1 + "," + str2 + ")";
return "(case when " + str1 + " is null then " + str2 + " else " + str1
+ " end)";
}
public String sqlIsNull(String str1) {
return sqlIsNull(str1, "0");
}
// 取整 (截取) 2008-8-2
public String sqlInt(String str) {
if (dbType == DB_SQL) {
return "cast(" + str + " as int)";
} else {
return "trunc(" + str + ")";
}
}
// cxd 20090108把字符转换成double
public String sqlDouble(String str) {
if (dbType == DB_SQL) {
return "cast(" + str + " as numeric(18,4))";
}
if (dbType == DB_DB2) {
return "cast(" + str + " as decimal(17,4))";
} else
return "trunc(" + str + ",4)";
}
/**
* '整除和取模,sstr1和sstr2是整数表达式
*/
public String sqlIntDiv(String sStr1, String sStr2, boolean bAbs) {
if (dbType == DB_ORA)
return "floor(abs("
+ sStr1
+ ")/abs("
+ sStr2
+ ")) "
+ (bAbs ? ""
: ("* sign(" + sStr1 + ") * sign(" + sStr2 + ")"));
return (bAbs ? "abs(" : "") + "(" + sStr1 + ") / (" + sStr2 + ")"
+ (bAbs ? ")" : "");
}
/**
* 取日期年、月、日
*
* @param cloumnname
* String
* @param i
* int 取年份时i从1开始
* @param j
* int
* @return String
*/
public String sqlSubstr(String cloumn_date, int i, int j) {
String ss = "";
if (dbType == DB_ORA)// ora 中取年份时可以从0-4 也可以从1-4
ss = "subStr(to_char(" + cloumn_date + ",'yyyy-mm-dd')," + i + ","
+ j + ")";
else if (dbType == DB_DB2)// db2 中只能从1-4
ss = "subStr(char(" + cloumn_date + ")," + i + "," + j + ")";
else
ss = "SUBSTRING(CONVERT(VARCHAR(10)," + cloumn_date + ",120)," + i
+ "," + j + ")";
return ss;
}
/**
* 日期加减天数
*
* @param sDate
* String:日期,如果是字符串字段,则要调用函数转换成sql日期
* @param sDays
* String:天数
* @return String
*/
public String sqlDateAdd(String sDate, String sDays) {
if (dbType == DB_DB2) {
return sDate + " " + sDays + " days ";
} else if (dbType == DB_ORA) {
return ("to_char(to_date('" + sDate + "','"
+ YssCons.YSS_DATEFORMAT + "')" + sDays + ")");
// return sDate + " " + sDays;
} else {// DATEADD (day,-1,fdate)
return ("DATEADD (day," + sDays + "," + sDate + ")");
}
}
/**
* 日期相减
*
* @param sDate1
* String:日期1,如果是字符串字段,则要调用函数转换成sql日期
* @param sDate2
* String:日期同上
* @return String:返回date2-date1的sql表达式
*/
public String sqlDateDiff(String sDate1, String sDate2) {
if (dbType == DB_DB2)
return "days(" + sDate1 + ")-days(" + sDate2 + ")";
else if (dbType == DB_SQL) {
return "DATEDIFF(day," + sDate1 + "," + sDate2 + ")";
} else
return sDate1 + "-" + sDate2;
}
发表评论
-
SQL:经典语句大全
2012-01-31 18:33 1071一、基础 1、说明:创建数据库CREATE DATABASE ... -
ms sql 实现自动备份数据库
2012-01-31 17:33 1080ms sql 实现自动备份数据库 第一种方式-- St ... -
SQL好习惯和执行原理
2011-09-21 10:52 980SQL好习惯和执行原理 一:查询的逻辑执行顺序 (1) ... -
SqlServer之Convert 函数应用
2011-01-18 17:19 927SqlServer之Convert 函数应用 Selec ... -
经典SQL语句大全
2010-06-18 14:54 859一、基础 1、说明:创建数据库CREATE DATABASE ... -
SQL函数总结
2010-06-18 11:53 8241:replace 函数第一个参数你的字符串,第二个参数你想替 ...
相关推荐
SQL_Sever数据库常用语句大全.zip SQL_Sever数据库常用命令大全.zip power函数获取数值的n次方 round函数保留指定位数小数点(指定位数后四舍五入) sign函数判断正数负数和零 sqrt平方根函数 convert转换数据类型...
本文将深入探讨数据库应用中的常用语句,主要关注Oracle数据库中的函数使用,结合提供的“oracle函数.doc”文档,我们将详细解析这些知识点。 首先,让我们了解数据库的基本操作,包括SELECT、INSERT、UPDATE和...
本篇文章将详细讲解在数据库性能优化过程中常用的SQL语句及其应用,帮助你提升数据库的运行效率。 首先,我们关注的是查询优化。在SQL中,`EXPLAIN`命令是分析查询执行计划的神器。通过EXPLAIN,我们可以看到数据库...
在这个话题中,我们将深入探讨SQL语句,特别是关于常用的SQL函数,这些函数在处理字符、数值、日期和数据转换时非常有用。 首先,让我们关注字符函数。字符函数主要用于处理文本数据,它们接受字符输入并返回字符或...
1. **SELECT语句**:这是SQL中最常用的语句,用于从数据库中检索数据。你可以根据需要选择一个或多个列,并使用WHERE子句来过滤结果。 2. **FROM子句**:配合SELECT语句,指定要从哪个表中提取数据。 3. **WHERE...
Excel表格在许多业务场景下是数据管理的常用工具,但当需要将大量数据导入数据库时,手动编写SQL插入语句会非常耗时且容易出错。"Excel表生成数据库SQL插入语句工具"正是为了解决这个问题而设计的。这款工具能够自动...
在数据库管理中,生成数据库表的INSERT语句脚本是一项常用的任务,特别是在数据迁移、备份或测试环境中。INSERT语句是SQL语言的一部分,用于向数据库表中插入新的数据记录。以下将详细介绍如何生成这些脚本以及其在...
本篇文章将深入探讨“数据库常用语句”,特别是基于Java Database Connectivity (JDBC) API的操作,帮助你理解如何利用SQL语言和相关函数优化数据库操作。 首先,JDBC是Java平台的标准接口,用于连接Java应用程序和...
"数据库中常用的数据类型转换" 在数据库应用程序中,数据类型转换是一个非常重要的知识点。由于数据库中的数据类型和应用程序中的数据类型可能不同,因此在进行数据交换时,需要进行类型转换。今天,我们将总结...
在探讨Oracle数据库SQL语句性能优化的背景下,文章主要介绍了一些提高数据库性能的基本原则、常用措施,并分析了SQL语句的执行过程,从而指导编程人员或数据库运维人员编写出高质量的SQL语句,减少资源占用,提高...
### GreenPlum数据库常用命令详解 #### 一、数据库启动:`gpstart` - **基本用法**:`gpstart` 是Greenplum数据库管理工具的一部分,主要用于启动Greenplum数据库集群。 - **常用参数**: - `-a`: 直接启动,不...
SQL常用增删改查语句 SQL 是一种广泛使用的数据库语言,用于管理关系数据库管理系统(RDBMS)。本文档总结了 SQL 中常用的增删改查语句,包括基本语句、高级查询语句、函数查询语句、事务和存储过程等。 一、...
在所有三种数据库中,都可以使用CASE语句进行条件判断和值转换。例如,在SQL Server中,可以使用`CASE WHEN condition THEN result ELSE alternative END`的结构。 ### 7. 字符串操作函数 字符串长度在三种数据库...
【DB2常用语句集萃】中的知识点涵盖了SQL查询的多个方面,主要涉及了数据的检索、聚合、分组、转换以及联接操作。以下是对这些知识点的详细说明: 1. **空值处理**:使用`ISNULL`函数来处理NULL值,例如`isnull...
标题中的"KETTLE常用数据库的JAR包"指的是Kettle在连接和操作不同数据库时需要的特定JDBC驱动的JAR文件。这些JAR文件包含了必要的API和实现,使得Kettle能够识别并正确地与数据库服务器通信,执行SQL语句,读取、...
Oracle 常用 SQL 语句汇总 Oracle 是一个功能强大且复杂的关系数据库管理系统,它提供了多种 SQL 语句来管理和操作数据库。在本文中,我们将详细介绍 Oracle 中常用的 SQL 语句,包括数据控制语句(DML)、数据定义...
本文档主要涵盖了一系列常用数据库操作语句,特别是与时间处理和表操作相关的知识点。这些语句在日常开发和维护中非常常见,对理解数据库管理和数据处理至关重要。 首先,我们来看时间处理。在数据库中,时间戳和...
【网站调试数据库转换技术】是IT领域中一项重要的工作,特别是在构建和维护网站时,数据库的转换可能因为各种原因变得必要。例如,从旧的数据库系统迁移到新的、更高效或者更符合业务需求的数据库系统。在这个过程中...