alter table 表名 add 字段 类型(50)
comment on column 表名.字段 is ‘说明’;
oracle执行update语句卡住不动
https://blog.csdn.net/trigl/article/details/50725683
js中
正则: /^(?!0+(?:\.0+)?$)(?:[1-9]\d*|0)(?:\.\d{1,2})?$/; 为数字小数点两位必须大于0
/^(?:[1-9]\d*|0)(?:\.\d{1,2})?$/ ; 为数字小数点两位可以为0
http://tool.oschina.net/regex/?optionGlobl=global#
比如有一个a字段格式如下:
aaaa-bbbb-cc
要截取最后的cc
1,首先获取最后一次出现的- 的位置
instr(‘aaaa-bbbb-cc’,’-’,-1),这样就得到了最后一个-的下标
2,从最后一次出现-的位置开始截取字符串
下标加一,然后截取
substr('aaaa-bbbb-cc',instr('aaaa-bbbb-cc','-',-1)+1)
运行例子:
select substr('aaaa-bbbb-cc',instr('aaaa-bbbb-cc','-',-1)+1) from dual;
https://my.oschina.net/Bintsun/blog/740055#comments
List
//合并第一列和第13列,从第二行开始 0就是第一列
mergeCell(sheet, 0, 1, sheet.getLastRowNum(), workbook,12);
/**
* 合并单元格
* @param sheet 要合并单元格的excel 的sheet
* @param cellLine 要合并的列
* @param startRow 要合并列的开始行
* @param endRow 要合并列的结束行
* @param offset 与合并的列相同合并方式的列的偏移量
*/
private static void mergeCell(HSSFSheet sheet, int cellLine, int startRow, int endRow,HSSFWorkbook workBook,int offset){
// 样式对象
HSSFCellStyle style = workBook.createCellStyle();
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
//获取开始行的数据,以便后面进行比较
String s_will = sheet.getRow(startRow).getCell(cellLine).getStringCellValue();
int count = 0;
boolean flag = false;
for (int i = startRow+1; i <= endRow; i++) {
sheet.getRow(i).getCell(cellLine).setCellType(Cell.CELL_TYPE_STRING);
String s_current = sheet.getRow(i).getCell(cellLine).getStringCellValue();
if(s_will.equals(s_current))
{
s_will = s_current;
if(flag)
{
sheet.addMergedRegion(new CellRangeAddress(startRow-count,startRow,cellLine,cellLine));
HSSFRow row = sheet.getRow(startRow-count);
if(null != sheet.getRow(startRow-count).getCell(cellLine)){
sheet.getRow(i).getCell(cellLine).setCellType(Cell.CELL_TYPE_STRING);
String cellValueTemp = sheet.getRow(startRow-count).getCell(cellLine).getStringCellValue();
HSSFCell cell = row.createCell(cellLine);
cell.setCellValue(cellValueTemp); // 跨单元格显示的数据
cell.setCellStyle(style); // 样式
}
//合并与当前列相同合并方式的列
sheet.addMergedRegion(new CellRangeAddress(startRow-count,startRow,cellLine + offset,cellLine + offset));
HSSFRow row1 = sheet.getRow(startRow-count);
if(null != sheet.getRow(startRow-count).getCell(cellLine + offset)){
sheet.getRow(i).getCell(cellLine + offset).setCellType(Cell.CELL_TYPE_STRING);
String cellValueTemp = sheet.getRow(startRow-count).getCell(cellLine + offset).getStringCellValue();
HSSFCell cell = row1.createCell(cellLine + offset);
cell.setCellValue(cellValueTemp); // 跨单元格显示的数据
cell.setCellStyle(style); // 样式
}
count = 0;
flag = false;
}
startRow=i;
count++;
}else{
flag = true;
s_will = s_current;
}
if (i == endRow && count > 0) {
/** 防止前面的漏合单元格,这里重新再合一次 start ***/
sheet.addMergedRegion(new CellRangeAddress(startRow - count,startRow, cellLine, cellLine));
HSSFRow row = sheet.getRow(startRow - count);
if (null != sheet.getRow(startRow - count).getCell(cellLine)) {
sheet.getRow(i).getCell(cellLine).setCellType(Cell.CELL_TYPE_STRING);
String cellValueTemp = sheet.getRow(startRow - count).getCell(cellLine).getStringCellValue();
HSSFCell cell = row.createCell(cellLine);
cell.setCellValue(cellValueTemp); // 跨单元格显示的数据
cell.setCellStyle(style); // 样式
}
sheet.addMergedRegion(new CellRangeAddress(startRow - count,
startRow, cellLine + offset, cellLine + offset));
HSSFRow row1 = sheet.getRow(startRow - count);
if (null != sheet.getRow(startRow - count).getCell(cellLine + offset)) {
sheet.getRow(i).getCell(cellLine + offset).setCellType(Cell.CELL_TYPE_STRING);
String cellValueTemp = sheet.getRow(startRow - count).getCell(cellLine + offset).getStringCellValue();
HSSFCell cell = row1.createCell(cellLine + offset);
cell.setCellValue(cellValueTemp); // 跨单元格显示的数据
cell.setCellStyle(style); // 样式
}
/** 防止前面的漏合单元格,这里重新再合一次 end ***/
// 最后两条相同时,再合并
if (sheet.getRow(i).getCell(cellLine).getStringCellValue().equals(sheet.getRow(i - 1).getCell(cellLine).getStringCellValue())) {
sheet.addMergedRegion(new CellRangeAddress(endRow - count,endRow, cellLine, cellLine));
String cellValueTemp2 = sheet.getRow(startRow - count).getCell(cellLine).getStringCellValue();
HSSFRow row2 = sheet.getRow(startRow - count);
HSSFCell cell2 = row2.createCell(cellLine);
cell2.setCellValue(cellValueTemp2); // 跨单元格显示的数据
cell2.setCellStyle(style); // 样式
// 合并与当前列相同合并方式的列
sheet.addMergedRegion(new CellRangeAddress(endRow - count,endRow, cellLine + offset, cellLine + offset));
String cellValueTemp3 = sheet.getRow(startRow - count).getCell(cellLine + offset).getStringCellValue();
HSSFRow row3 = sheet.getRow(startRow - count);
HSSFCell cell3 = row3.createCell(cellLine + offset);
cell3.setCellValue(cellValueTemp3); // 跨单元格显示的数据
cell3.setCellStyle(style); // 样式
}
}
}
}
/**
* 列头单元格样式
*/
public HSSFCellStyle getColumnTopStyle(HSSFWorkbook workbook) {
// 设置字体
HSSFFont font = workbook.createFont();
//设置字体大小
font.setFontHeightInPoints((short)11);
//字体加粗
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
//设置字体名字
font.setFontName("Courier New");
//设置样式;
HSSFCellStyle style = workbook.createCellStyle();
//设置底边框;
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
//设置底边框颜色;
style.setBottomBorderColor(HSSFColor.BLACK.index);
//设置左边框;
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
//设置左边框颜色;
style.setLeftBorderColor(HSSFColor.BLACK.index);
//设置右边框;
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
//设置右边框颜色;
style.setRightBorderColor(HSSFColor.BLACK.index);
//设置顶边框;
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
//设置顶边框颜色;
style.setTopBorderColor(HSSFColor.BLACK.index);
//在样式用应用设置的字体;
style.setFont(font);
//设置自动换行;
style.setWrapText(false);
//设置水平对齐的样式为居中对齐;
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
//设置垂直对齐的样式为居中对齐;
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
return style;
}
/**
* 列数据信息单元格样式
*/
public HSSFCellStyle getStyle(HSSFWorkbook workbook) {
// 设置字体
HSSFFont font = workbook.createFont();
//设置字体大小
//font.setFontHeightInPoints((short)10);
//字体加粗
//font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
//设置字体名字
font.setFontName("Courier New");
//设置样式;
HSSFCellStyle style = workbook.createCellStyle();
//设置底边框;
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
//设置底边框颜色;
style.setBottomBorderColor(HSSFColor.BLACK.index);
//设置左边框;
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
//设置左边框颜色;
style.setLeftBorderColor(HSSFColor.BLACK.index);
//设置右边框;
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
//设置右边框颜色;
style.setRightBorderColor(HSSFColor.BLACK.index);
//设置顶边框;
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
//设置顶边框颜色;
style.setTopBorderColor(HSSFColor.BLACK.index);
//在样式用应用设置的字体;
style.setFont(font);
//设置自动换行;
style.setWrapText(false);
//设置水平对齐的样式为居中对齐;
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
//设置垂直对齐的样式为居中对齐;
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
return style;
}
使用list.contains方法
在这里插入代码片
List> newList = new ArrayList>();
for (int i = 0; i < list.size(); i++) {
if(!newList.contains(list.get(i))){
newList.add(list.get(i));
}
}