SQL常见问题积累
SQL积累--仅适用于SQL Server
1、sql中,字符串保存序号,按照数字顺序进行排序
order by RIGHT(REPLICATE('',10)+CAST(householdNo AS varchar(10)),10) asc
--householdNo 为要排序字段
2、控制小数位数
convert(varchar,convert(decimal(18,2),ROUND(Num1/Num2*100,2)))+'%' as XXRate
convert(varchar,convert(decimal(18,2),ROUND(Num1/Num2*100,2)))+'%' as XXRate ,
--- ROUND(待四舍五入小数,四舍五入位数):是四舍五入,但是并不会改变数字的长度。
--- convert():第一个convert,将四舍五入完的小数截取小数位数,通过decimal(18,2)实现控制小数位数为2
--- convert():第二个convert,将四舍五入并截取小数位数的数字转化为字符串类型,后加百分号,完成百分比显示
拓展:int型除法,要得到百分比时注意两点:①被除数不为0 ②除数先转换成浮点型。
值得注意的是:Num1应该保证是浮点数。
3、建完表不能修改问题
菜单工具栏“工具”---选项----设计器---组织保存要求重新创建表的更改,去掉选择。
4、分析器显示行号
勾选行号选项后确定,分析器中边出现了行号。
5、SQL触发器
创建某个表的触发器的SQL语句
USE Test_PMDemo
-----添加时的触发器
GO
create trigger EstimateInsert
on PM_Project --将要进行更改的表名
for insert --给表插入一条数据的时候触发
as
declare @PrjID uniqueidentifier --定义一个变量
select @PrjID = ID from inserted --把查询出的指定字段的值赋值给变量
INSERT INTO PM_Estimate(id,PrjID) VALUES(newid(),@PrjID) --插入语句
-----删除时的触发器
GO
create trigger EstimateDelete
on PM_Project --将要进行更改的表名
for delete --给表插入一条数据的时候触发
as
declare @PrjID uniqueidentifier --定义一个变量
select @PrjID = ID from deleted --把查询出的指定字段的值赋值给变量
delete from PM_Estimate where PrjID=@PrjID ----删除语句
6、SQL Server 时间字符串转换为DateTime格式
SELECT GETDATE() -------获取当前时间
SELECT CONVERT(DATETIME,'2018-06-26 09:54:30.027'); --------将时间字符串转换为DATETIME格式,
7、SQL字符串截取
1、CHARINDEX(substr ,str):返回子串 substr 在字符串 str 中第一次出现的位置,如果字符substr在字符串str中不存在,则返回0;
2、LEFT(str, length):从左边开始截取str,length是截取的长度;
3、RIGHT(str, length):从右边开始截取str,length是截取的长度;
4、SUBSTRING(str ,n ,m):返回字符串str从第n个字符截取到第m个字符;
5、REPLACE(str, n, m):将字符串str中的n字符替换成m字符;
6、LEN(str):计算字符串str的长度;
7、REVERSE(str):把字符串倒置;REVERSE("1234"); ----> 4321
sqlserver函数大全:https://wenku.baidu.com/view/e2e19dec172ded630b1cb628.html###
实例:
SELECT ...,SGCompInfo,
SUBSTRING(SGCompInfo,0,CHARINDEX(',' ,SGCompInfo)) SGComp,
SUBSTRING(SGCompInfo,CHARINDEX(',' ,SGCompInfo)+1,LEN(SGCompInfo)) SGer,...
FROM ....
执行结果:

8、将一个表中数据插入(insert)到另一个表中
insert into hh (fielda,fieldb,fieldc) select fieldx,fieldy,fieldz from mm
9、sql字符串替换 replace函数
replace(源字符串,字符串中某个字符或字符串,要修改为哪个字段)
例:(以时间格式转为时间戳为例)
select CONVERT(varchar,GETDATE(),21) timenow1
select CONVERT(char(17),replace(replace(replace(replace(CONVERT(varchar,GETDATE(),21),'-',''),':',''),' ',''),'.',''))timenow2
执行结果:

10、有关索引
11、SQL 中字母大小写的转换
12、表还原(重置)
truncate table 表名
---实例
truncate table WorkFlowArchives
13、日期比较
select*from Log where datediff(DAY,WriteTime,CONVERT(datetime,'2018-10-17',101))<0
14、行转列、列转行
https://blog.csdn.net/qq_39774060/article/details/80618094
--- 持续更新中---
* SQL Server 日期格式化输出
最常用格式
SELECT CONVERT(VARCHAR(100), GETDATE(), 111) 结果:2010/03/06
SELECT CONVERT(VARCHAR(100), GETDATE(), 23) 结果:2010-03-06
| T-SQL Script | Output format |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 0) | 03 6 2010 4:19PM |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 1) | 03/06/10 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 2) | 10.03.06 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 3) | 06/03/10 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 4) | 06.03.10 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 5) | 06-03-10 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 6) | 06 03 10 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 7) | 03 06, 10 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 8) | 16:23:28 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 9) | 03 6 2010 4:23:40:110PM |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 10) | 03-06-10 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 11) | 10/03/06 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 12) | 100306 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 13) | 06 03 2010 16:24:39:763 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 14) | 16:24:50:823 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 20) | 2010-03-06 16:25:04 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 21) | 2010-03-06 16:25:18.107 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 22) | 03/06/10 4:25:27 PM |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 23) | 2010-03-06 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 24) | 16:26:48 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 25) | 2010-03-06 16:26:55.810 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 100) | 03 6 2010 4:27PM |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 101) | 03/06/2010 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 102) | 2010.03.06 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 103) | 06/03/2010 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 104) | 06.03.2010 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 105) | 06-03-2010 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 106) | 06 03 2010 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 107) | 03 06, 2010 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 108) | 16:28:25 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 109) | 03 6 2010 4:28:35:123PM |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 110) | 03-06-2010 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 111) | 2010/03/06 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 112) | 20100306 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 113) | 06 03 2010 16:29:25:217 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 114) | 16:29:32:543 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 120) | 2010-03-06 16:29:44 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 121) | 2010-03-06 16:29:51.030 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 126) | 2010-03-06T16:29:59.327 |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 130) | 21 ???? ????? 1431 4:30:06:780PM |
| SELECT CONVERT(VARCHAR(100), GETDATE(), 131) | 21/03/1431 4:30:21:990PM |
SQL常见问题积累的更多相关文章
- 连接SQL常见问题
HTTP Status 500 – Internal Server Error Type Exception Report Message Request processing failed; nes ...
- sql 的积累
sql的积累 By:山高似水深 原创 转载注明出处 .REVERSE() 反转 例如: Hive 可用 2016年12月3日11:31:59 2.instr(str,'.')位置 结果:得出在str中 ...
- git指令总结及常见问题积累与解决方案
git指令总结及常见问题积累与解决方案 git初始化一个项目并且长传到服务器后端步骤: 1.本地文件操作 通过:git init初始化化一个项目 会出现一个隐藏文件 ,可以文件夹属性设置进行查看,此 ...
- SQL的积累
SQL的积累学习(不常用的经常会忘记,所以以后用到的就会记在下面): --新增字段alter table t_Student add Test varchar(200)--删除字段alter tabl ...
- SQL Server 积累
2016-11-24 sql语句修改某表某字段的数据类型和字段长度: 问题是在修改老功能中暴露出来的,我修改了图片上传功能,结果报图片路径超出数据库字段规定长度,我检查数据库后发现之前设计数据库的人将 ...
- Sql 常见问题
join on and vs join on where SELECT * FROM Orders LEFT JOIN OrderLines ON OrderLines.OrderID=Orders. ...
- sql语句积累
有一个需求表(demand),每一记录就是一条需求:另外有一个报价表(quotation),每一条记录是对需求记录的报价详情. 需求表: 报价表: 我现在想得到每条需求的信息以及有多少人报价了,我们可 ...
- SQL面试积累
以下题目都在MySQL上测试可行,有疏漏或有更优化的解决方法的话欢迎大家提出,我会持续更新的:) 有三个表,如果学生缺考,那么在成绩表中就不存在这个学生的这门课程成绩的记录,写一段SQL语句,检索出每 ...
- 有用的sql语句积累
⑴. sql查询未被外键关联的数据 select * from bb b where not exists (select 1 from aa a where a.bid=b.bid)
随机推荐
- Mac轻量级服务器http-server
刚想跑个Vue页面,发现我本地没有应用服务器(Tomcat/IIS...) 于是想下载了Tomcat,才发现我没有装JDK,而Mac的JDK下得好久,都下不下来,想想算了. 于是在网上找个轻量级的服务 ...
- 《Java大学教程》—第23章 Java网络编程
本章主要关注的是Java的几个应用网络编程的场景,对于网络编程没有太多深入介绍,而Java本来也没有多少针对网络编程的特性.虽然Java有个Applet的概念,但是真用这个的开发的场景其实不多. 23 ...
- router-link 自定义点击事件
<li v-for="(item, index) in menuList"> <router-link class="classify" ta ...
- P2802 回家 (DFS+剪枝)
这里详细讲一下剪枝的点: 因为,可以重复在同一个点上走动.所以,这个步数是无穷的. 剪枝一:步数< n*m; (因为起点不算所以不取等号) 剪枝二:步数当大于已有的答案时,直接退出DFS, ...
- python中如何对待易过期的cookies
有时候,我们进行爬虫操作是,会使用reques的的post函数携带cookies访问目标网站已达到登录或者其他 目的,笔者最近就遇到了这样的案例,周六写好的代码,周一过来就不行了,重新登录访问目标网页 ...
- VMware中安装Centos 7
1.点击“文件-新建”,如下图 2.选择"典型".下一步 3.选择”稍后安装操作系统”,下一步. 4.选择要安装的操作系统类型,下一步 5.填写虚拟机名称,设置虚拟机的存放位置,下 ...
- 快速搭建日志系统——ELK STACK
什么是ELK STACK ELK Stack是Elasticserach.Logstash.Kibana三种工具组合而成的一个日志解决方案.ELK可以将我们的系统日志.访问日志.运行日志.错误日志等进 ...
- BZOJ1063 NOI2008 道路设计 树形DP
题目传送门: BZOJ 题意精简版:给出一棵树,在一种方案中可以将树的若干链上的所有边的边权改为$0$,但需要保证任意两条链之间没有交点.问最少的一种方案,使得从根节点到其他节点经过的边的边权和的最大 ...
- Maven学习第3期---m2eclipse使用
一.m2eclipse简介 和Nexus一样,m2eclipse也是Sonatype出品的一款开源工具,它基于Eclipse Public License-v.10开源许可证发布,用户可以免费下载并使 ...
- Django 多表查询练习题 Q查询 F查询 聚合 分组
-------------------------------------------------自己偷的懒,或许用加倍时间也补不回来,珍惜现在的拥有的时光,把我现在! 上节回顾 基于对象的跨表查询( ...