SQL统计一个字符串有重复的子字符串个数

图片说明

请问大神,怎么把这个带有分隔符的字符串,里面有重复的字符串个数求出来。
不想转置列再统计。

sql

3个回答

先拆分 再GROUP BY

--> --> (Roy)生成測試數據

if not object_id('Tab') is null
drop table Tab
Go
Create table Tab([Col1] int,[COl2] nvarchar(5))
Insert Tab
select 1,N'a,b,c' union all
select 2,N'd,e' union all
select 3,N'f'
Go

--SQL2000用辅助表:
if object_id('Tempdb..#Num') is not null
drop table #Num
go
select top 100 ID=Identity(int,1,1) into #Num from syscolumns a,syscolumns b
Select
a.Col1,COl2=substring(a.Col2,b.ID,charindex(',',a.Col2+',',b.ID)-b.ID)
from
Tab a,#Num b
where
charindex(',',','+a.Col2,b.ID)=b.ID --也可用 substring(','+a.COl2,b.ID,1)=','
--2000不使用辅助表
Select
a.Col1,COl2=substring(a.Col2,b.number,charindex(',',a.Col2+',',b.number)-b.number)
from
Tab a join master..spt_values b
ON B.type='p' AND B.number BETWEEN 1 AND LEN(A.col2)
where
substring(','+a.COl2,b.number,1)=','

SQL2005用Xml:

select
a.COl1,b.Col2
from
(select Col1,COl2=convert(xml,''+replace(COl2,',','')+'') from Tab)a
outer apply
(select Col2=C.v.value('.','nvarchar(100)') from a.COl2.nodes('/root/v')C(v))b

SQL05用CTE:

;with roy as
(select Col1,COl2=cast(left(Col2,charindex(',',Col2+',')-1) as nvarchar(100)),Split=cast(stuff(COl2+',',1,charindex(',',Col2+','),'') as nvarchar(100)) from Tab
union all
select Col1,COl2=cast(left(Split,charindex(',',Split)-1) as nvarchar(100)),Split= cast(stuff(Split,1,charindex(',',Split),'') as nvarchar(100)) from Roy where split>''
)
select COl1,COl2 from roy order by COl1 option (MAXRECURSION 0)

生成结果:
/*
Col1 COl2


1 a
1 b
1 c
2 d
2 e
3 f
*/

非常感谢,因为数据量比较大,这样分拆的结果,数量更大。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
sql 检索结果拼接成字符串。。
因项目中业务要求所致,写SQL的时候对检索结果的最后两列进行了行列转换。如下 pivot (sum(sl) for community_code in ('0201' 社区1, '0202' 社区2,'0203' 社区3)) 因为社区的个数不确定,就导致了输出的结果集中列的个数也不确定。所以用实体类进行接收结果集的时候就遇到了麻烦。 对应上述问题,决定将结果集的每一行拼接成一个字符串。那么问题就来了,输出的数据和社区名称对应不起来了。。不知道有没有什么好的方法解决。。
C# 按行读取txt文本内容导入数据库SQL(1)第二行数据就从第二列插入(2)索引超出了数组界限?
都是按行读取txt内容,(因为有两行数据和其他的不一样)用正则分析出来,赋给一个字符串数组, 将一个字符串数组的每个值一次写入数据库行的对应列。一行读取完成。 可是却显示,索引超出了数组界限,数组个数和行对应的 。将读取出来的数据显示在textBox中是正确的, 但是奇怪的是也确实是导入进去了,数据库中表格有了数据 最终结果似乎对的,除了第二行第一列没有数据。谢谢,刚入手,第一个程序!
php接受axios传过来的数组,join分隔后添加进数据库,只有数字才可以添加成功,而中文不行,求解决
前台数据获得的是数组,我将数组分隔成字符串添加到mysql数据库中只能添加数字 如果数据是中文或字母就添加不进去,编码格式是Utf8 这是前端代码片 ``` onSubmit(formName) { this.$refs[formName].validate(async valid => { if (valid) { alert('提交成功!') const res = await this.$http.post('php/tj.php', { t1: this.form.domains }) console.log(res) console.log(this.form.domains) } else { console.log('提交失败!') return false } }) } ``` 这是php文件,$sql插入数字可以,但中文不行.英文也不行 ``` <?php header("Content-type:text/html;charset=utf-8"); //接收数据,JSON格式转换 $data = json_decode(file_get_contents("php://input"), TRUE); // 这里的t1是个数组,里面含有数组对象 $t = $data['t1']; // 将数组对象中的value取出赋予新数组 foreach ($t as $key => $v) { $arr[] = $v['value']; } // 按逗号开始分隔,将数据一一分隔 $name = join(',', $arr); // 链接数据库 include 'mysql.php'; // 插入数据,第一个空值是ID自增,$name是分隔数组后的多个数据 $sql = "insert into t1 values('', '$name')"; // 执行sql语句 $res = mysqli_query($conn, $sql); // echo $t; echo json_encode($arr); echo $name; ?> ``` 这是前端页面 这是数据库数据 ![这是数据库数据](https://img-ask.csdn.net/upload/202003/01/1583061197_885722.png)
尝试写了一个 JDBC 操作 SQLServer 的工具类,但是好像有问题,求大神帮忙指正
java新人,尝试写了一个 JDBC 操作 SQLServer 的工具类,但是好像有问题,调用 insert 指令没问题,而 select 指令出现如下报错: com.microsoft.sqlserver.jdbc.SQLServerException: ')' 附近有语法错误。 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216) at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515) at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:792) at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:689) at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696) at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(SQLServerStatement.java:616) at com.javaee.servletxm.comm.MSSQLJDBC.select(MSSQLJDBC.java:160) at com.javaee.servletxm.comm.MSSQLJDBC.select(MSSQLJDBC.java:195) at com.javaee.servletxm.comm.MSSQLJDBC.selectFirstValue(MSSQLJDBC.java:172) at com.javaee.servletxm.comm.MSSQLJDBC.getPageNumber(MSSQLJDBC.java:221) at com.javaee.servletxm.comm.MSSQLJDBC.selectByFY(MSSQLJDBC.java:259) at com.javaee.servletxm.kqgl.KqManager.getAllKqxx(KqManager.java:38) at com.javaee.servletxm.kqgl.Kqwh.doGet(Kqwh.java:47) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at javax.servlet.http.HttpServlet.service(HttpServlet.java:723) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879) at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:617) at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1760) at java.lang.Thread.run(Thread.java:724) 这是具体的代码,求大神帮忙指正 package com.javaee.servletxm.comm; /** * jdbc下 SQL Server 2005 数据库的封装类 */ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.Date; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.List; import java.util.Properties; public class MSSQLJDBC { // 配置文件名称 private String iniFileName = MSSQLJDBC.class.getClassLoader().getResource("/com/javaee/servletxm/comm").getPath()+ "mssql.properties"; // 连接数据库 private String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; private String url = "jdbc:sqlserver://localhost;DatabaseName=jdms"; private String user = "sa"; private String password = ""; // 定义连接属性 private Connection connect = null; // 与连接有关三个通道 private Statement stmt = null; private PreparedStatement pstmt = null; private CallableStatement cstmt = null; public static final String stmtType = "stmt"; public static final String pstmtType = "pstmt"; public static final String cstmtType = "cstmt"; // 定义参数类型的静态常量值 public static final String varCharType = "varchar"; public static final String intType = "int"; public static final String doubleType = "decimal"; public static final String dateType = "datetime"; public static final String timeType = "timestamp"; // 定义全局的结果集 private ResultSet rs = null; // 在构造方法中对属性进行初始化赋值操作 public MSSQLJDBC() { // 读取配置文件 readIni(); // 初始化连接 initConnect(); } // 可配置文件 .properties // 读取配置文件 private void readIni() { File file = new File(iniFileName); if (!file.exists()) { // 创建一个文件 try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } // 判断文件是否有值 if (file.length() == 0) {// 说明是一个空文件 // 初始化值 try { Properties p = new Properties(); p.put("driver", driver); p.put("url", url); p.put("user", user); p.put("password", password); FileOutputStream fos = new FileOutputStream(file); p.store(fos, "配置文件信息"); fos.close(); } catch (IOException e) { e.printStackTrace(); } } else {// 如果有值 // 将信息读取出来 try { FileInputStream fis = new FileInputStream(file); Properties p = new Properties(); p.load(fis); this.driver = p.getProperty("driver"); this.url = p.getProperty("url"); this.user = p.getProperty("user"); this.password = p.getProperty("password"); fis.close(); } catch (IOException e) { e.printStackTrace(); } } } // 建立连接 private void initConnect() { try { Class.forName(driver); this.connect = DriverManager.getConnection(url, user, password); this.connect.setAutoCommit(false);// 设置手动提交事务 this.stmt = connect.createStatement(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } /*/ 从tomcat缓冲池获取连接 private void initConnectFromDataSource() { try { InitialContext ic = new InitialContext(); DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/oracleds"); this.connect = ds.getConnection(); this.connect.setAutoCommit(false); this.stmt = connect.createStatement(); } catch (NamingException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } }*/ // 需要调用者控制事务的两个方法 // 提交方法 private void commit() { try { this.connect.commit(); } catch (SQLException e) { e.printStackTrace(); } } // 回滚事务 private void rollBack() { try { this.connect.rollback(); } catch (SQLException e) { e.printStackTrace(); } } // 定义一组与操作有关的方法 // 使用普通通道执行的select public ResultSet select(String sql) { ResultSet prs = null; if (stmt != null) { try { prs = stmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } } return prs; } // 根据传入的sql直接获取单一值 // 使用此方法的时候sql语句返回的单一的值 public String selectFirstValue(String sql, String type, List<String> csList) { String rstr = ""; rs = select(sql, type, csList);// 确定此结果集只有一条记录 if (rs != null) {// 说明结果集有值,且只有一条记录 try { ResultSetMetaData rsmd = rs.getMetaData(); if (rs.next()) { // 移动到第一条记录 String p_type = rsmd.getColumnTypeName(1); rstr = getResultSetValue(rs, 1, p_type); } } catch (SQLException e) { e.printStackTrace(); } } return rstr; } // 使用普通通道执行的select /** * sql 参数 type 使用通道的类型 stmt pstmt cstmt List<String> csList 预编通道执行的参数队列 * String 最少必须满足如下条件的字符串 数据类型 ,数据值 数据类型定义说明 字符串 数字(整数、小数) 日期(DATE、TIMESTAMP) */ public ResultSet select(String sql, String type, List<String> csList) { ResultSet prs = null; if (type.equals(stmtType)) {// 说明使用普通通道来执行 prs = select(sql); } else if (type.equals(pstmtType)) {// 说明使用预编译通道来执行 if (connect != null) { try { pstmt = connect.prepareStatement(sql); // 验证传入的参数和sql中的参数个数一致 setPrepareStatement(pstmt, csList);// 将参数设置进当前的预编译通道 prs = pstmt.executeQuery(); } catch (Exception e) { e.printStackTrace(); } } } return prs; } // 获取 总页数 public int getPageNumber(String sql, String type, List<String> csList, int pageSize) { // 处理总页数 int pageNumber = 0; // 第一步获取sql总记录数 String psql = "select count(*) from (" + sql + ")"; String result = selectFirstValue(psql, type, csList); int rows = 0; if (result != null && result.trim() != "") { rows = Integer.valueOf(result); } if (rows % pageSize == 0) { pageNumber = rows / pageSize; } else { pageNumber = rows / pageSize + 1; } return pageNumber; } /** * 自动添加分页查询方法 * * @param sql * 要执行的sql * @param type * 执行方式 * @param csList * 参数列表 * @param curPage * 当前页数 * @param pageSize * 每页记录数 默认为10 * @return */ public ResultSet selectByFY(String sql, String type, List<String> csList, int curPage, int pageSize) { ResultSet prs = null; // 处理 每页记录数 if (pageSize <= 0) { pageSize = 10;// 默认页面10条记录 } int pageNumber = getPageNumber(sql, type, csList, pageSize); // 处理当前页数 if (curPage < 0) { curPage = 1;// 默认第一页 } if (curPage > pageNumber) { curPage = pageNumber; } String psql = "select tmpaa.* from (select tmpa.*,(select (ROW_NUMBER() over (order by id))) as rn from (" + sql + ") tmpa where (select (ROW_NUMBER() over (order by id))) <= " + (curPage * pageSize) + ") tmpaa where tmpaa.rn >= " + ((curPage - 1) * pageSize + 1); prs = select(psql, type, csList); return prs; } // 将预编通道执行的参数队列按照指定规则设置进通道中 private void setPrepareStatement(PreparedStatement p, List<String> csList) throws Exception { if (csList != null && csList.size() > 0) { for (int i = 0; i < csList.size(); i++) { // 此处的str是数据类型 ,数据值 // 解析出数据类型和数据值 String[] s = csList.get(i).split(","); String sType = s[0]; String sData = s[1]; if (varCharType.equals(sType)) { p.setString(i + 1, sData); } else if (intType.equals(sType)) { p.setInt(i + 1, Integer.valueOf(sData)); } else if(doubleType.equals(sType)){ p.setDouble(i+1, Double.valueOf(sData)); } else if (dateType.equals(sType)) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd"); java.util.Date d = sdf.parse(sData); p.setDate(i + 1, new Date(d.getTime())); } else if (timeType.equals(sType)) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd"); java.util.Date d = sdf.parse(sData); p.setTimestamp(i + 1, new Timestamp(d.getTime())); } } } } // 定义一个执行insert update delete的方法 public int iudSql(String sql) { int ri = -1; if (stmt != null) { try { ri = stmt.executeUpdate(sql); commit(); } catch (SQLException e) { e.printStackTrace(); rollBack(); } } return ri; } public int iudSql(String sql, String type, List<String> csList) { int ri = -1; if (stmtType.equals(type)) { ri = iudSql(sql); } else if (pstmtType.equals(type)) { if (connect != null) { try { pstmt = connect.prepareStatement(sql); setPrepareStatement(pstmt, csList); ri = pstmt.executeUpdate(); commit(); } catch (Exception e) { e.printStackTrace(); rollBack(); } } } return ri; } /** * 编写一个通用的遍历ResultSet结果集的方法 */ public void iteratorResultSet(ResultSet rs) { try { if (rs != null) {// 说明有值 // ResultSetMetaData 此对象里封装了与结果集有关所有信息 // 此结果有几列组成,每列的列名,每列的数据类型 ResultSetMetaData rsmd = rs.getMetaData(); // 得到结果集列数 int columnCount = rsmd.getColumnCount(); // 输出此结果集的所有列名 for (int i = 1; i <= columnCount; i++) { System.out.print(rsmd.getColumnName(i) + "\t"); } System.out.println(""); // 遍历输出所有的数据 while (rs.next()) { // 如何在获取rs中的数据? for (int i = 1; i <= columnCount; i++) { String type = rsmd.getColumnTypeName(i); System.out.print(getResultSetValue(rs, i, type) + "\t"); } System.out.println(""); } } } catch (SQLException e) { e.printStackTrace(); } } // 从ResultSet中根据数据类型来得到数据值的方法 // 先处理常用的sqlserver的数据类型的对应 private String getResultSetValue(ResultSet rs, int index, String type) { String rstr = ""; try { if (rs != null && !"".equals(type) && index > 0) { if ("char".equals(type.trim()) || "varchar".equals(type.trim())) { if (rs.getString(index) != null) { rstr = rs.getString(index); } } else if ("int".equals(type.trim())) { rstr = rs.getInt(index) + ""; } else if ("decimal".equals(type.trim())) { rstr = String.valueOf(rs.getDouble(index)); } else if ("date".equals(type.trim())) { Date date = rs.getDate(index); if (date != null) { rstr = new SimpleDateFormat("yyyy年MM月dd日").format(date); } } else if ("timestamp".equals(type.trim()) || "datetime".equals(type.trim())) { Timestamp tt = rs.getTimestamp(index); if (tt != null) { rstr = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒").format(tt); } } } } catch (SQLException e) { e.printStackTrace(); } return rstr; } /* //统一事务管理的批量sql的封装 public boolean iudSql(List<String> sqlList){ int ri = -1; if(stmt!=null){ try { ri = stmt.executeUpdate(sql); commit(); } catch (SQLException e) { e.printStackTrace(); rollBack(); } } return ri; }*/ // 关闭连接 public void close() { try { // 关闭所有的与数据库有关的对象 if (rs != null) { rs.close(); rs = null; } if (stmt != null) { stmt.close(); stmt = null; } if (pstmt != null) { pstmt.close(); pstmt = null; } if (cstmt != null) { cstmt.close(); cstmt = null; } if (connect != null) { connect.close(); connect = null; } } catch (SQLException e) { e.printStackTrace(); } } }
php从ANSI文件中截取数据出现中文乱码怎么解决?
php简单的文件处理程序,将一个文件夹下的所有文件遍历并存入数组,然后将每个文件(ANSI简体中文编码)逐行读取并存入另一个数组(以回车和换行为依据切割)。从第二个数组中截取需要的数据并存入新建文件中。在初始文件与转换后的新文件编码格式一致的情况下,新文件打开后中文部分出现乱码,数字和英文正常。试过所有的转码方法,如iconv、mb_convert_encoding以及在头部加charset等等都无效。请问这是为什么?怎么解决? ``` echo "begin...".PHP_EOL; $i = 0; $files = glob('目标文件路径'); //把目标文件夹下所有的文件存到一个数组里面 $size = count($files); foreach ($files as $filename) { $string=file_get_contents($filename); //echo iconv("GBK", "UTF-8//IGNORE",$string); $array=explode("\r\n",$string); //字符串转数组(换行+回车切割) foreach($array as $key=>$linedata) { $time=substr($linedata,32,10); //时间 $name=substr($linedata,337,40); //名称 //$name=mb_convert_encoding(substr($linedata,337,40),"GBK","auto"); /*$name=iconv("GBK","UTF-8//IGNORE",$name); echo $name.PHP_EOL;*/ $sql="insert into tlog(time, ame) values ('".$time."',".name."');"; //$sql=iconv("GBK", "UTF-8//IGNORE",$sql); //$sql=mb_convert_encoding($sql,"UTF-8"); file_put_contents("test.sql",$sql.PHP_EOL,FILE_APPEND); } //加入进度显示:已转换/总长度 $i++; echo ($i/$size * 100)."%".PHP_EOL; } ``` 转换前 ![图片说明](https://img-ask.csdn.net/upload/201812/18/1545120607_775155.jpg) 转换后 ![图片说明](https://img-ask.csdn.net/upload/201812/18/1545120851_84925.jpg)
请问在C# 中我用N''在数据库里可以执行 为什么在C#中就会报错呢
![图片说明](https://img-ask.csdn.net/upload/201906/18/1560856555_286003.png)![图片说明](https://img-ask.csdn.net/upload/201906/18/1560856568_48315.png) ## # 这是部分存储过程(太长 只贴一部分了)这其实就是U8的客户科目余额表的存储过程 USE [UFDATA_150_2019] GO /****** Object: StoredProcedure [dbo].[gl_assReport] Script Date: 2019-06-18 16:09:51 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[gl_assReport] @tblname NVARCHAR(60) , @iBeginPeriod INT , --月份 @iEndPeriod INT , --月份 @strass NVARCHAR(2000) ,--辅助项,金额9 @whereSql NVARCHAR(2000) ,--过滤条件 @wheresqlcode NVARCHAR(2000) , --科目过滤条件 @bcdc INT ,-- -1 方向 借 1 贷 0 @bVouch BIT, --记账标志11 @citem_class NVARCHAR(10), -- 项目大类 @bDisplayCreditLine bit =0, --信用额度 @sAuth NVARCHAR(4000), --权限字符串 @isshowzeroaccumulation bit=1, @detailedObject nvarchar(100)='', --交叉项 @subtotalitem nvarchar(100)='', --小计项 @collectitem nvarchar(100)='', --汇总项 @isPhone tinyint=0 --@isPhone:1移动报表按期间汇总 AS DECLARE @isUseMultiCurrency AS BIT --是否启用多币种核算 SELECT @isUseMultiCurrency=case when UPPER(cvalue)=N'TRUE' then 1 else 0 end from accinformation where cname=N'isUseMultiCurrency' and csysid=N'GL' --统计项 -- declare @staticsticsItem as nvarchar(100) -- select @staticsticsItem=enumcode from v_aa_enum where EnumName =@statistics and EnumType ='GL_code' -- if @staticsticsItem=N'部门' -- begin -- set @strass=replace(@strass,'department','') -- set @strass ='department,' +@strass --end -- else if @staticsticsItem=N'项目' --begin -- set @strass=replace(@strass,'item','') -- set @strass ='item,' +@strass --end -- else if @staticsticsItem=N'客户' -- begin -- set @strass=replace(@strass,'customer','') -- set @strass ='customer,' +@strass -- end -- else if @staticsticsItem=N'供应商' -- begin --set @strass=replace(@strass,'vendor','') --set @strass ='vendor,' +@strass --end -- --明细对象 -- declare @detailedObjectItem as nvarchar(100) -- declare @tempStr as nvarchar(100) -- select @detailedObjectItem=enumcode from v_aa_enum where EnumName =@detailedObject and EnumType ='gl_code' --print @detailedObjectItem --set @tempStr=substring(@strass,CHARINDEX(',',@strass)+1,LEN(@strass)) --if @detailedObjectItem=N'供应商' -- set @strass=replace(@strass,@tempStr,'vendor') --else if @detailedObjectItem=N'部门' -- set @strass=replace(@strass,@tempStr,'department') --else if @detailedObjectItem=N'项目' -- set @strass=replace(@strass,@tempStr,'department') --else if @detailedObjectItem=N'客户' -- set @strass=replace(@strass,@tempStr,'customer') --else if @detailedObjectItem=N'科目' -- set @strass=replace(@strass,@tempStr,'code') -- --end --默认币种 declare @accid as char(3) set @accid=(select SUBSTRING(DB_NAME(),8,3)) declare @RMB as nvarchar(50) set @RMB=isnull( (select cCurName from ufsystem..UA_Account where cAcc_Id=@accid),N'人民币') --启用日期 declare @dStartDate as datetime set @dStartDate=(select cvalue from accinformation where csysid ='gl' and cname = 'dGLStartDate') declare @AccBeginPeriod as int declare @AccPeriod as int declare @startYear as int if exists(select 1 from ufsystem..ua_period where dbegin <=@dStartDate and dend >= @dStartDate and cacc_id=@accid) select @AccPeriod=iid,@startYear=iyear from ufsystem..ua_period where dbegin <=@dStartDate and dend >= @dStartDate and cacc_id=@accid else select top 1 @AccPeriod=iid,@startYear=iyear from ufsystem..ua_period where cacc_id=@accid order by iyear,iid set @AccBeginPeriod=@AccPeriod set @AccPeriod=convert(int,str(@startYear,4)+(case when @AccPeriod>9 then str(@AccPeriod,2) else '0'+str(@AccPeriod,1) end) ) print @AccPeriod --启用期间 --无起始日期 if right(str(@iBeginPeriod),2)='00' set @iBeginPeriod=@iBeginPeriod+1 declare @regPeriod as int--用来决定取accsum表的期间 IF @bVouch = 1 --如果包含未记账,求最大记账期间 Begin set @regPeriod=(select isnull(max(iyPeriod),convert(int,str(@startYear,4))*100) from gl_accvouch where ibook=1 and iPeriod <13 and iPeriod >0 ) End ELSE set @regPeriod=@iBeginPeriod set @regPeriod=case when @regPeriod=convert(int,str(@startYear,4))*100 then @AccPeriod else @regPeriod end set @regPeriod=case when @regPeriod>@iBeginPeriod then @iBeginPeriod else @regPeriod end --最大使用凭证的期间 可能为 00 if right(str(@regPeriod,9),2)='00' set @regPeriod=@regPeriod+1 --查询起始日期在第二个年度以后 set @regPeriod=case when @iBeginPeriod/100>@regPeriod/100 then @iBeginPeriod/100*100+1 else @regPeriod end print '@regPeriod:'+cast(@regPeriod as nvarchar) DECLARE @withIndex nvarchar(100) --强制使用索引提高效率 set @withIndex=' ' if exists(SELECT * FROM sysindexes WHERE name = N'idx_GL_accvouch_iYPeriod_ibook_iflag_code' and id=object_id('gl_accvouch')) set @withIndex=' with (index(idx_GL_accvouch_iYPeriod_ibook_iflag_code))' --DECLARE @tsqltemptable NVARCHAR(60) DECLARE @sql NVARCHAR(4000) DECLARE @tblnameA NVARCHAR(60) DECLARE @tblnameB NVARCHAR(60) DECLARE @tblnameM NVARCHAR(60) declare @tmpCode nvarchar(60) SET @tblnameA = @tblname + 'a' SET @tblnameB = @tblname + 'b' SET @tblnameM = @tblname + 'M' set @tmpCode=@tblname +'code' set @sql='if not exists(select 1 from tempdb..sysobjects where name='''+@tmpcode+''' and xtype=''u'') select * into tempdb..'+@tmpcode+' from code ' exec(@sql) IF CHARINDEX('tempdb..', @tblnameA) > 0 BEGIN SET @tblnameA = SUBSTRING(@tblnameA, LEN('tempdb..') + 1, LEN(@tblnameA)) END --SET @tsqltemptable = 'tempdb..gl_sqltemptable' SET @sql = ' if exists( select * from tempdb..sysobjects where id=object_id(''' + 'tempdb..' + @tblnameA + ''') and type=''u'') drop table tempdb..' + @tblnameA EXEC(@sql) SET @sql = ' if exists( select * from tempdb..sysobjects where id=object_id(''' + 'tempdb..' + @tblnameB + ''') and type=''u'') drop table tempdb..' + @tblnameB EXEC(@sql) SET @sql = ' if exists( select * from tempdb..sysobjects where id=object_id(''' + 'tempdb..' + @tblnameM + ''') and type=''u'') drop table tempdb..' + @tblnameM EXEC(@sql) set @sql=' if exists( select * from tempdb..sysobjects where id=object_id(''' + 'tempdb..' + @tblname + ''') and type=''u'') drop table tempdb..' + @tblname EXEC(@sql) DECLARE @OldSelectSql AS NVARCHAR(2000) DECLARE @selectSql AS NVARCHAR(2000) DECLARE @selectSqlA AS NVARCHAR(2000) DECLARE @selectSqlAllA AS NVARCHAR(2000) --declare @whereSql as nvarchar(2000) DECLARE @oldGroupbySql AS NVARCHAR(2000) DECLARE @groupbySql AS NVARCHAR(2000) DECLARE @joinonSql AS NVARCHAR(2000) DECLARE @oldjoinonSql AS NVARCHAR(2000) DECLARE @ibanlanceSql AS NVARCHAR(200) DECLARE @ass AS NVARCHAR(50) DECLARE @asscodebegin AS NVARCHAR(50) DECLARE @asscodeend AS NVARCHAR(50) --declare @wheresqlcode as nvarchar(2000) SET @selectSql = ' select ' SET @selectSqlA = ' select ' SET @selectSqlAllA = '' --SET @whereSql = ' where 1=1 ' SET @groupbySql = ' group by ' SET @joinonSql = ' ' set @oldjoinonSql= '' set @whereSql=' where 1=1 ' + @whereSql --set @wheresqlcode='' declare @leftjoinonSql as nvarchar(2000) set @leftjoinonSql =' ' declare @assCount int --显示项个数 set @assCount=0 --declare @subTotalSql nvarchar(2000) --小计更新 declare @subtotalSelectSql nvarchar(2000) --小计字段cdept_id|cdept_id,cperson_id --set @subTotalSql='' set @subtotalSelectSql='' DECLARE sqlcursor CURSOR FOR SELECT ass,asscodeBegin,asscodeEnd FROM f_split(@strass,',') OPEN sqlcursor FETCH NEXT FROM sqlcursor INTO @ass,@asscodebegin,@asscodeend ; WHILE @@FETCH_STATUS = 0 BEGIN set @assCount=@assCount+1 /* SET @subTotalSql = @subTotalSql + CASE WHEN @ass = 'code' THEN ' a.ccode=Null,' WHEN @ass = 'customer' THEN ' a.ccus_id=Null,' WHEN @ass = 'department' THEN ' a.cdept_id=Null,' WHEN @ass = 'person' THEN 'a.cperson_id=Null,' WHEN @ass = 'vendor' THEN 'a.csup_id=Null,' WHEN @ass = ' itemclass ' THEN 'a.citem_class=Null,' WHEN @ass = 'item' THEN 'a.citem_id=Null,' WHEN @ass = 'citem' THEN 'citemccode=Null,' WHEN @ass = 'ccustomer' THEN ' ccccode=Null,' WHEN @ass = 'cvendor' THEN ' cvccode=Null,' WHEN @ass = 'dcustomer' THEN ' cdccode=Null,' WHEN @ass = 'dvendor' THEN ' cdccode=Null,' WHEN @ass = 'groupcode' THEN ' cgroupcode=Null,' WHEN @ass = '' or @ass='ibanlance' THEN '' ELSE 'a.'+@ass+'=Null,' END */ SET @selectSql = @selectSql + CASE WHEN @ass = 'code' THEN ' a.ccode,' WHEN @ass = 'customer' THEN ' a.ccus_id,' WHEN @ass = 'department' THEN ' a.cdept_id,' WHEN @ass = 'person' THEN 'a.cperson_id,' WHEN @ass = 'vendor' THEN 'a.csup_id,' WHEN @ass = ' itemclass ' THEN 'a.citem_class,' WHEN @ass = 'item' THEN 'a.citem_id,' WHEN @ass = 'citem' THEN 'citemccode,' WHEN @ass = 'ccustomer' THEN ' ccccode,' WHEN @ass = 'cvendor' THEN ' cvccode,' WHEN @ass = 'dcustomer' THEN ' cdccode,' WHEN @ass = 'dvendor' THEN ' cdccode,' WHEN @ass = 'groupcode' THEN ' cgroupcode,' WHEN @ass = '' or @ass='ibanlance' THEN '' ELSE 'a.'+@ass+',' END --自定义项小计:@subtotalitem=N'cdefine10' if charindex(','+@ass+',',','+@subtotalitem+',')>0 begin set @subtotalSelectSql = @subtotalSelectSql + replace(@selectSql,'select ','') + '|' print '@subtotalSelectSql:'+@subtotalSelectSql end SET @selectSqlAllA = @selectSqlAllA + CASE WHEN @ass = 'code' THEN ' a.ccode,' WHEN @ass = 'customer' THEN ' a.ccus_id,' WHEN @ass = 'department' THEN ' a.cdept_id,' WHEN @ass = 'person' THEN 'a.cperson_id,' WHEN @ass = 'vendor' THEN 'a.csup_id,' WHEN @ass = ' itemclass ' THEN 'a.citem_class,' WHEN @ass = 'item' THEN 'a.citem_id,' WHEN @ass = 'citem' THEN 'a.citemccode,' WHEN @ass = 'ccustomer' THEN ' a.ccccode,' WHEN @ass = 'cvendor' THEN ' a.cvccode,' WHEN @ass = 'dcustomer' THEN ' a.cdccode,' WHEN @ass = 'dvendor' THEN ' a.cdccode,' WHEN @ass = 'groupcode' THEN ' a.cgroupcode,' WHEN @ass = '' or @ass='ibanlance' THEN '' ELSE 'a.'+@ass+',' END SET @selectSqlA = @selectSqlA + CASE WHEN @ass = 'code' THEN ' a.ccode,' WHEN @ass = 'customer' THEN ' a.ccus_id,' WHEN @ass = 'department' THEN ' a.cdept_id,' WHEN @ass = 'person' THEN 'a.cperson_id,' WHEN @ass = 'vendor' THEN 'a.csup_id,' WHEN @ass = ' itemclass ' THEN 'a.citem_class,' WHEN @ass = 'item' THEN 'a.citem_id,' WHEN @ass = 'citem' THEN (case when @citem_class='ch' then 'cinvccode as citemccode,' else 'citemccode,' end) WHEN @ass = 'ccustomer' THEN ' ccccode,' WHEN @ass = 'cvendor' THEN ' cvccode,' WHEN @ass = 'dcustomer' THEN ' cdccode,' WHEN @ass = 'dvendor' THEN ' cdccode,' WHEN @ass = 'groupcode' THEN ' cgroupcode,' WHEN @ass = '' or @ass='ibanlance' THEN '' ELSE 'a.'+@ass+',' END --set @whereSql=@whereSql + --case --when @ass='ccode' then (case when @asscodebegin='' then '' else ' and ccode>=''' + @asscodebegin +'''' end) --+ (case when @asscodeend='' then '' else ' and ccode<=''' + @asscodeend +'''' end ) + ' ' --when @ass='cus' then (case when @asscodebegin='' then '' else ' and ccus_id>=''' + @asscodebegin + '''' end) --+ (case when @asscodeend='' then '' else ' and ccus_id<=''' + @asscodeend +'''' end ) + ' and ccus_id is not null' --when @ass='dept' then (case when @asscodebegin='' then '' else ' and cdept_id>=''' + @asscodebegin + '''' end ) --+ (case when @asscodeend='' then '' else ' and cdept_id<=''' + @asscodeend end ) + ' and cdept_id is not null' --when @ass='person' then (case when @asscodebegin='' then '' else ' and cperson_id>=''' + @asscodebegin +'''' end ) --+ (case when @asscodeend='' then '' else ' and cperson_id<=' + @asscodeend+'''' end ) + ' and cperson_id is not null' --when @ass='sup' then (case when @asscodebegin='' then '' else ' and csup_id>=' + @asscodebegin+'''' end ) --+ (case when @asscodeend='' then '' else ' and csup_id<=''' + @asscodeend+'''' end ) + ' and csup_id is not null' --when @ass=' itemclass ' then (case when @asscodebegin='' then '' else ' and citem_class=''' + @asscodebegin+'''' end ) --+' and citem_class is not null' --when @ass='itemid' then (case when @asscodebegin='' then '' else ' and citem_id>=''' + @asscodebegin+'''' end ) --+ (case when @asscodeend='' then '' else ' and citem_id<=' + @asscodeend+'''' end ) + ' and citem_id is not null' --else '' --end SET @groupbySql = @groupbySql + CASE WHEN @ass = 'code' THEN ' a.ccode,' WHEN @ass = 'customer' THEN ' a.ccus_id,' WHEN @ass = 'department' THEN ' a.cdept_id,' WHEN @ass = 'person' THEN 'a.cperson_id,' WHEN @ass = 'vendor' THEN 'a.csup_id,' WHEN @ass = ' itemclass ' THEN 'a.citem_class,' WHEN @ass = 'item' THEN 'a.citem_id,' WHEN @ass = 'citem' THEN (case when @citem_class='ch' then 'cinvccode,' else 'citemccode,' end) WHEN @ass = 'ccustomer' THEN ' customer.ccccode,' WHEN @ass = 'cvendor' THEN ' vendor.cvccode,' WHEN @ass = 'dcustomer' THEN ' customer.cdccode,' WHEN @ass = 'dvendor' THEN ' vendor.cdccode,' WHEN @ass = 'groupcode' THEN ' GF_VgroupStruct.cgroupcode,' WHEN @ass = '' or @ass='ibanlance' THEN '' ELSE 'a.'+@ass+',' END SET @whereSql = @whereSql + CASE WHEN @ass = 'customer' THEN ' and not a.ccus_id is Null ' WHEN @ass = 'department' THEN ' and not a.cdept_id is Null ' WHEN @ass = 'person' THEN ' and not a.cperson_id is Null ' WHEN @ass = 'vendor' THEN ' and not a.csup_id is Null ' WHEN @ass = ' itemclass ' THEN ' and not a.citem_class is Null ' WHEN @ass = 'item' or @ass = 'citem' THEN ' and not a.citem_id is Null ' WHEN @ass = 'ccustomer' THEN ' and not customer.ccccode is Null ' WHEN @ass = 'cvendor' THEN ' and not vendor.cvccode is Null ' WHEN @ass = 'dcustomer' THEN ' and not customer.cdccode is Null' WHEN @ass = 'dvendor' THEN ' and not vendor.cdccode is Null' WHEN @ass = '' or @ass='ibanlance' or @ass='code' THEN '' ELSE ' ' END /* SET @wheresqlcode = @wheresqlcode + CASE WHEN @ass = 'customer' THEN ' and code.bcus=1 ' WHEN @ass = 'department' THEN ' and code.bdept=1 and code.bperson=0 ' WHEN @ass = 'person' THEN ' and code.bperson=1 and code.bdept=0 ' WHEN @ass = 'vendor' THEN ' and code.bsup=1 ' WHEN @ass = 'item' THEN ' and code.bitem=1 ' WHEN @ass = 'ccustomer' THEN ' and code.bcus=1 ' WHEN @ass = 'cvendor' THEN ' and code.bsup=1 ' WHEN @ass = 'dcustomer' THEN ' and code.bcus=1 ' WHEN @ass = 'dvendor' THEN ' and code.bsup=1 ' WHEN @ass like 'cdefine%' THEN ' and code.b'+@ass+'=1 ' ELSE '' END --个人,部门同时存在,条件冲突,去掉部门条件 if CHARINDEX('and code.bdept=1 and code.bperson=0', @wheresqlcode)>0 and CHARINDEX('and code.bperson=1 and code.bdept=0', @wheresqlcode)>0 SET @wheresqlcode=Replace(@wheresqlcode,'and code.bdept=1 and code.bperson=0','') */ SET @joinonSql = @joinonSql + CASE WHEN @ass = 'code' THEN ' isnull(a.ccode,'''') = isnull(b.ccode,'''') and' WHEN @ass = 'customer' THEN ' isnull(a.ccus_id,'''') = isnull(b.ccus_id,'''') and' WHEN @ass = 'department' THEN ' isnull(a.cdept_id,'''') = isnull(b.cdept_id,'''') and' WHEN @ass = 'person' THEN ' isnull(a.cperson_id,'''') = isnull(b.cperson_id,'''') and' WHEN @ass = 'vendor' THEN ' isnull(a.csup_id,'''') = isnull(b.csup_id,'''') and' WHEN @ass = ' itemclass ' THEN ' isnull(a.citem_class,'''') = isnull(b.citem_class,'''') and' WHEN @ass = 'item' THEN ' isnull(a.citem_id,'''') = isnull(b.citem_id,'''') and' WHEN @ass = 'citem' THEN ' isnull(a.citemccode,'''') = isnull(b.citemccode,'''') and' WHEN @ass = 'groupcode' THEN ' isnull(a.cgroupcode,'''') = isnull(b.cgroupcode,'''') and' WHEN @ass = 'ccustomer' THEN ' isnull(a.ccccode,'''') = isnull(b.ccccode,'''') and' WHEN @ass = 'cvendor' THEN ' isnull(a.cvccode,'''') = isnull(b.cvccode,'''') and' WHEN @ass = 'dcustomer' or @ass = 'dvendor' THEN ' isnull(a.cdccode,'''') = isnull(b.cdccode,'''') and' WHEN @ass = 'cname' THEN ' isnull(a.cname,'''') = isnull(b.cname,'''') and' WHEN @ass = '' or @ass='ibanlance' THEN '' ELSE ' a.' + @ass + '=b.' + @ass + ' and' END SET @leftjoinonSql = @leftjoinonSql + CASE WHEN @ass = 'ccustomer' and charindex('left join customer on A.ccus_id=customer.ccuscode',@leftjoinonSql)=0 THEN ' left join customer on A.ccus_id=customer.ccuscode' WHEN @ass = 'cvendor' and charindex('left join vendor on A.csup_id=vendor.cvencode',@leftjoinonSql)=0 THEN ' left join vendor on A.csup_id=vendor.cvencode' WHEN @ass = 'dcustomer' and charindex('left join customer on A.ccus_id=customer.ccuscode',@leftjoinonSql)=0 THEN ' left join customer on A.ccus_id=customer.ccuscode ' WHEN @ass = 'dvendor' and charindex('left join vendor on A.csup_id=vendor.cvencode',@leftjoinonSql)=0 THEN ' left join vendor on A.csup_id=vendor.cvencode ' WHEN @ass = 'citem' THEN ' left join '+(case when @citem_class='ch' then 'inventory f on a.citem_id=f.cinvcode' else 'fitemss'+@citem_class+' f on A.citem_id=f.citemcode ' end) WHEN @ass = 'groupcode' THEN ' left join GF_VgroupStruct on A.cdept_id=GF_VgroupStruct.cComCode ' ELSE '' END SET @ibanlanceSql = CASE WHEN @ass = 'ibanlance' THEN ( CASE WHEN @asscodebegin = '' THEN '' ELSE ' and abs(me)>=' + @asscodebegin + '' END ) + ( CASE WHEN @asscodeend = '' THEN '' ELSE ' and abs(me)<=' + @asscodeend + '' END ) + ' ' ELSE '' END FETCH NEXT FROM sqlcursor INTO @ass,@asscodebegin,@asscodeend ; END CLOSE sqlcursor DEALLOCATE sqlcursor print 'selectSql:-'+@selectSql
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
【JSON解析】浅谈JSONObject的使用
简介 在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,同时也易于机器解析和生成、易于理解、阅读和撰写,而且Json采用完全独立于语言的文本格式,这使得Json成为理想的数据交换语言。 JSON建构于两种结构: “名称/值”对的集合(A Collection of name/va...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
Java 14 都快来了,为什么还有这么多人固守Java 8?
从Java 9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
点击上方蓝字设为星标下面开始今天的学习~今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。1、no code 项目地址:https://github.com/kelseyhight...
Python全栈 Linux基础之3.Linux常用命令
Linux对文件(包括目录)有很多常用命令,可以加快开发效率:ls是列出当前目录下的文件列表,选项有-a、-l、-h,还可以使用通配符;c功能是跳转目录,可以使用相对路径和绝对路径;mkdir命令创建一个新的目录,有-p选项,rm删除文件或目录,有-f、-r选项;cp用于复制文件,有-i、-r选项,tree命令可以将目录结构显示出来(树状显示),有-d选项,mv用来移动文件/目录,有-i选项;cat查看文件内容,more分屏显示文件内容,grep搜索内容;>、>>将执行结果重定向到一个文件;|用于管道输出。
​两年前不知如何编写代码的我,现在是一名人工智能工程师
全文共3526字,预计学习时长11分钟 图源:Unsplash 经常有小伙伴私信给小芯,我没有编程基础,不会写代码,如何进入AI行业呢?还能赶上AI浪潮吗? 任何时候努力都不算晚。 下面,小芯就给大家讲一个朋友的真实故事,希望能给那些处于迷茫与徘徊中的小伙伴们一丝启发。(下文以第一人称叙述) 图源:Unsplash 正如Elsa所说,职业转换是...
强烈推荐10本程序员必读的书
很遗憾,这个春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终将会...
非典逼出了淘宝和京东,新冠病毒能够逼出什么?
loonggg读完需要5分钟速读仅需 2 分钟大家好,我是你们的校长。我知道大家在家里都憋坏了,大家可能相对于封闭在家里“坐月子”,更希望能够早日上班。今天我带着大家换个思路来聊一个问题...
牛逼!一行代码居然能解决这么多曾经困扰我半天的算法题
春节假期这么长,干啥最好?当然是折腾一些算法题了,下面给大家讲几道一行代码就能解决的算法题,当然,我相信这些算法题你都做过,不过就算做过,也是可以看一看滴,毕竟,你当初大概率不是一行代码解决的。 学会了一行代码解决,以后遇到面试官问起的话,就可以装逼了。 一、2 的幂次方 问题描述:判断一个整数 n 是否为 2 的幂次方 对于这道题,常规操作是不断这把这个数除以 2,然后判断是否有余数,直到 ...
Spring框架|JdbcTemplate介绍
文章目录一、JdbcTemplate 概述二、创建对象的源码分析三、JdbcTemplate操作数据库 一、JdbcTemplate 概述 在之前的web学习中,学习了手动封装JDBCtemplate,其好处是通过(sql语句+参数)模板化了编程。而真正的JDBCtemplete类,是Spring框架为我们写好的。 它是 Spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单...
立即提问