pivot

还在为sqlserver与mysql互相转换而发愁?

孤者浪人 提交于 2020-10-23 13:14:06
由于最近博主公司最近在把系统从sqlserver版本转成mysql版本,所以博主最近就在做sql语句的转换,在这之中遇到了很多sql函数的问题,很多都是 sqlserver拥有的在mysql中却没有 。 1、分页。 sqlserver : top。 mysql :limit。 top的用法是 select top 1 * from a表 limit的用法是 select * from a表 limit 0,1 2、convert函数 sqlserver中语法是 convert(nvarchar,参数,121) mysql中语法是 convert(参数,char) 在这里特别注意一下,mysql中它的数据类型被限制了,不是我不用nvarchar而是nvarchar不能用 以下是mysql的convert可使用的几种数据类型 ,这里要谨记 二进制,同带binary前缀的效果 : BINARY 字符型,可带参数 : CHAR() 日期 : DATE 时间: TIME 日期时间型 : DATETIME 浮点 : DECIMAL 整数 : SIGNED 无符号整数 : UNSIGNED 3、cast函数 sqlserver的cast有两种写法 cast(参数 as 类型) , cast(参数 ,类型) mysql的cast只有一种写法 cast(参数 as 类型) 4、isnull

三行代码嵌入 java 实现复杂 Excel 数据入库

*爱你&永不变心* 提交于 2020-10-22 00:58:45
一般常规办法:先使用POI或者HSSFWorkbook等第三方类库对其表格数据结构化,再用SQL语句写入数据库。由于Java并没有表格对象,总要利用集合加实体类去实现(硬编码),如果碰到格式复杂的表格,解析难度大,工作量会成倍增加,代码不仅冗长、且很难通用。 比如要处理这么个场景:数据库表Logistics有3个字段:Shippers、Region、Quantity。解析如下Excel表格,并入库: 入库后的效果: Java代码大概要写成这样子: ... File target = new File(filepath, filename); FileInputStream fi = new FileInputStream(target); HSSFWorkbook wb = new HSSFWorkbook(fi); HSSFSheet sheet = wb.getSheetAt(sheetnum); int rowNum = sheet.getLastRowNum() + 1; for (int i = startrow; i < rowNum; i++) { PageData varpd = new PageData(); HSSFRow row = sheet.getRow(i); int cellNum = row.getLastCellNum(); ... } ...

数据结构与算法学习笔记二: 排序算法

我的梦境 提交于 2020-10-17 05:01:00
  最经典最常用的排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、计数排序、桶排序、基数排序。 在这些排序算法中如果按照时间复杂度来分类大致可分为三类: O(n^2): 冒泡排序、选择排序、插入排序。 O(n*logn): 归并排序、快速排序、希尔排序。 O(n): 计数排序、基数排序、桶排序。 学习这么多的排序算法,除了了解其原理、实现其代码外还要评判出各种排序算法之间性能、效率。 评判排序算法好坏的标准   对于众多的排序算法我们要将它们做一个对比需要从如下三个方面着手:时间复杂度、空间复杂度、算法稳定性。 时间复杂度   时间复杂度其实就代表了一个算法执行的效率,我们在分析排序算法的时间复杂度时要分别给出最好情况,最坏情况,平均情况下的时间复杂度。 空间复杂度   空间复杂度代表了算法对存储空间的消耗程度。可以简单的理解为算法的内存消耗。   在这里我们还引入另外一个概念:in-place (原地排序)和out-place(非原地排序) ;其中in-place 可以称为原地排序就是特指空间复杂度为O(1)的排序算法,算法只占用常数内存,不占用额外内存,而out-place 的算法需要占用额外内存。 算法稳定性   针对排序算法,还有一个指标就是:稳定性。   所谓排序算法的稳定性指的是:如果待排序的序列中存在值相等的元素,经过排序之后

web 展现数据时如何实现行列互换

為{幸葍}努か 提交于 2020-10-16 04:51:12
1. 行列互换需求最常见的是在 BI 分析中,在 BI 中这个功能也叫旋转,可以直接通过拖拽字段方式实现行列互换效果,例如: http://c.raqsoft.com.cn/article/1535678317741#toc_h3_6 2. 如果没有 BI 工具,只有报表工具的话,那么用报表也可以实现行列互换。 例如超链接实现方式: http://c.raqsoft.com.cn/article/1575729781849#toc_h2_0 或者通过宏动态控制行列字段显示,从而实现行列互换: http://c.raqsoft.com.cn/article/1575729781849#toc_h2_3 3. 如果既没有 BI 工具也没有报表工具,那么还可以通过 sql 实现。 部分数据库提供了行列互换函数,例如 oracle 数据库内置的 pivot、unpivot 函数,可以简化 sql 处理,但是不支持这种函数的数据库则需要写很复杂的 sql 语句实现,这时 sql 执行效率和 sql 维护工作量都是需要额外关心的点。 来源: oschina 链接: https://my.oschina.net/u/3651044/blog/4314039

文件误删秒恢复!微软又发布了一款命令行神器!

爱⌒轻易说出口 提交于 2020-10-06 08:46:31
误删文件这事相信大家都碰到过,比如不小心误删了一个重要的文件,一不留神就把自己的硬盘清空了,或者是面对已经被误删的文件手足无措......以前碰到这种情况,有实力的程序员们就靠实力恢复误删的文件,像猿妹这样没实力的,网上购买个小工具也可以帮我恢复,就是费钱。 现在好了,最近微软在 Windows 10 应用商店中上架了一款免费的数据删除恢复工具 Windows File Recovery,猿妹再也不用担心误删文件了。 Windows File Recovery基于命令行程序设计,大小仅有8.26MB,所有Windows 10用户均可免费下载使用。 无论是照片、文档、视频还是其他,Windows File Recovery都可以帮你恢复,而且它还支持机械硬盘、固态硬盘、U盘、SD卡等多种硬件类型,遗憾的是,不支持网络驱动器文件恢复。 下面还是一起来看看用法吧: 1、安装下载 首先,通过下载链接打开“Windows File Recovery”的下载界面,点击“获取”按钮安装。(下载地址: https://www.microsoft.com/zh-cn/p/windows-file-recovery/9n26s50ln705?activetab=pivot:overviewtab ) 这里需要提醒大家的是,安装Windows File Recovery操作系统要求Windows

算法基础:常用的排序算法知识笔记

て烟熏妆下的殇ゞ 提交于 2020-10-05 14:00:50
1、算法外排序分类 2、冒泡排序 冒泡排序(Bubble Sort)属于交换排序,它的原理是:循环两两比较相邻的记录,如果反序则交换,直到没有反序的记录为止。 实现算法: /** * 冒泡排序优化后的算法 * 设置一个标记来标志一趟比较是否发生交换 * 如果没有发生交换,则数组已经有序 */ void bubbleSort(SqList *L){ int i,j; int flag = true; // flag 用来作为标记 for (i = 1; i < L->length && flag; i++) { // 若flag为true 则说明数据交换过,否则没交换过(数组已经有序) 则停止循环 flag = false; for (j = L->length - 1; j >= i; j--) { if (L->r[j] > L->r[j+1]) { swap(L, j, j+1); flag = true; // 如果有数据交换 flag为true } } } } 3、简单选择排序 简单选择排序法(Simple Selection Sort)是通过 n-i 次关键字间的比较,从 n-i+1 个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换。 原理是:每一次从无序数据组的数据元素中选出最小(或最大)的一个元素,存放在无序数组的开始位置,随着无序数组元素减少