简单实用SQL脚本Word下载.docx
- 文档编号:18735487
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:14
- 大小:73.22KB
简单实用SQL脚本Word下载.docx
《简单实用SQL脚本Word下载.docx》由会员分享,可在线阅读,更多相关《简单实用SQL脚本Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
Q3
Q4
int)
test2
1000,2000,4000,5000)
3000,3500,4200,5500)
test2
--列转行
id,name,quarter,profile
unpivot
profile
([Q1],[Q2],[Q3],[Q4])
)
unpvt
sql替换字符串substringreplace
--例子1:
update
tbPersonalInfo
set
TrueName
=
replace(TrueName,substring(TrueName,2,4),'
**'
where
ID
1
--例子2:
Mobile
replace(Mobile,substring(Mobile,4,11),'
********'
--例子3:
replace(Email,'
chinamobile'
'
******'
1
SQL查询一个表内相同纪录having
如果一个ID可以区分的话,可以这么写
表
in
group
by
having
sum
(1)>
1)
如果几个ID才能区分的话,可以这么写
ID1+ID2+ID3
(select
ID1,ID2,ID3
其他回答:
数据表是zy_bho,想找出ZYH字段名相同的记录
--方法1:
SELECT
*FROM
zy_bho
a
WHERE
EXISTS
(SELECT
FROM
[PK]
<
>
a.[PK]
AND
ZYH
a.ZYH)
--方法2:
a.*
join
b
on
(a.[pk]<
b.[pk]
and
a.zyh=b.zyh)
--方法3:
zy_bbo
zyh
count(zyh)>
1)
--其中pk是主键或是
unique的字段。
把多行SQL数据变成一条多列数据,即新增列
Select
DeptName=O.OUName,
'
9G'
=Sum(Case
When
PersonalGrade=9
Then
Else
0
End),
8G'
PersonalGrade=8
7G4'
PersonalGrade=7
JobGrade
=4
7G3'
=3
6G'
PersonalGrade=6
5G3'
PersonalGrade=5
5G2'
=2
4G'
PersonalGrade=4
3G2'
PersonalGrade=3
3G1'
=1
2G'
PersonalGrade=2
1G'
PersonalGrade=1
--'
未定级'
PersonalGrade=NULL
End)
表复制
PhoneChange_Num
([IMSI],Num)
[IMSI]
count([IMEI])
num
[Test].[dbo].[PhoneChange]
[IMSI]
order
num
desc
语法1:
InsertINTOtable(field1,field2,...)values(value1,value2,...)
语法2:
InsertintoTable2(field1,field2,...)selectvalue1,value2,...fromTable1(要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。
语法3:
SELECTvale1,value2intoTable2fromTable1(要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。
语法4:
使用导入导出功能进行全表复制。
如果是使用【编写查询以指定要传输的数据】,那么在大数据表的复制就会有问题?
因为复制到一定程度就不再动了,内存爆了?
它也没有写入到表中。
而使用上面3种语法直接执行是会马上刷新到数据库表中的,你刷新一下mdf文件就知道了。
利用带关联子查询Update语句更新数据
Update
Table1
c
Table2
Table1.a)
is
null
A
newqiantity=B.qiantity
A,B
A.bnum=B.bnum
update
A.bnum
A.newqiantity,B.qiantity
A
left
B
A.bnum=B.bnum)
AS
C
C.newqiantity
C.qiantity
C.bnum
=XX
连接远程服务器
openrowset('
SQLOLEDB'
server=192.168.0.67;
uid=sa;
pwd=password'
BCM2.dbo.tbAppl'
192.168.0.67'
;
sa'
password'
Date和Time样式
不带世纪数位(yy)
(1)
带世纪数位(yyyy)
标准
输入/输出(3)
-
0或100(1,2)
默认
monddyyyyhh:
miAM(或PM)
101
美国
mm/dd/yyyy
2
102
ANSI
yy.mm.dd
3
103
英国/法国
dd/mm/yyyy
4
104
德国
dd.mm.yy
5
105
意大利
dd-mm-yy
6
106
(1)
ddmonyy
7
107
(1)
mondd,yy
8
108
hh:
mi:
ss
9或109(1,2)
默认设置+毫秒
ss:
mmmAM(或PM)
10
110
mm-dd-yy
11
111
日本
yy/mm/dd
12
112
ISO
yymmdd
yyyymmdd
13或113(1,2)
欧洲默认设置+毫秒
ddmonyyyyhh:
mmm(24h)
14
114
20或120
(2)
ODBC规范
yyyy-mm-ddhh:
ss(24h)
21或121
(2)
ODBC规范(带毫秒)
ss.mmm(24h)
126(4)
ISO8601
yyyy-mm-ddThh:
ss.mmm(无空格)
127(6,7)
带时区Z的ISO8601。
yyyy-mm-ddThh:
ss.mmmZ
(无空格)
130(1,2)
回历(5)
mmmAM
131
(2)
dd/mm/yyhh:
--语句及查询结果:
CONVERT(varchar(100),
GETDATE(),
0):
05
16
2006
10:
57AM
1):
05/16/06
2):
06.05.16
3):
16/05/06
4):
16.05.06
5):
16-05-06
6):
06
7):
16,
8):
57:
46
9):
46:
827AM
10):
05-16-06
11):
06/05/16
12):
060516
13):
937
14):
967
20):
2006-05-16
47
21):
47.157
22):
05/16/06
47
AM
23):
2006-05-16
24):
25):
47.250
100):
101):
05/16/2006
102):
2006.05.16
103):
16/05/2006
104):
16.05.2006
105):
16-05-2006
106):
2006
107):
108):
49
109):
49:
437AM
110):
05-16-2006
111):
2006/05/16
112):
20060516
113):
513
114):
547
120):
121):
对上面进行动态生成字符串:
declare
@sql1
nvarchar(200),@sql2
nvarchar(200)
@count
nvarchar(100);
0)'
@sql2
exec
sp_executesql
@sql2,N'
nvarchar(50)
out'
@count
out
+'
:
+
@count
--SQL
Server
仅保证往返转换(即从原始数据类型进行转换后又返回原始数据类型的转换)在各版本间产生相同值。
DECLARE
@myval
decimal
(5,
2)
SET
193.57
CAST(CAST(@myval
varbinary(20))
decimal(10,5))
--
Or,
using
CONVERT
CONVERT(decimal(10,5),
CONVERT(varbinary(20),
@myval))
--输出193.57000
--bigint数据类型的字段截取(其它类型也一样)
substring(CONVERT(varchar(15),字段名),11,9)
表名
substring(cast(字段名
varchar(50),6,9))
SQL中的相除
--SQL中的相除
CASE
WHEN
ISNULL(A+B,0)<
THEN
LTRIM(CONVERT(DEC(18,2),A*100.0/(A+B)))+'
%'
ELSE
END
百分数'
TB
--百分比的不同格式
LTRIM(CONVERT(DEC(18,2),42*100.0/96))+'
百分数string'
--DEC=decimal
CONVERT(decimal(10,2),42*100.0/96)
百分数dec'
--100
与
100.0是不一样的
CONVERT(decimal(10,2),42*100/96)
没有保留到小数点'
--from
Tb
百分数dec
desc
--43.75%
43.75
43.00
--方法二:
Select
(Convert(varchar(50),Round(42*100.0/96,3))+'
百分比
--43.750000%
四舍五入
/*ROUND
(
numeric_expression
length
[
function
]
function
必须为
tinyint、smallint
或
int。
如果省略
或其值为
0(默认值),则将舍入
numeric_expression。
如果指定了0以外的值,则将截断
*/
ROUND(150.45648,
2);
--保留小数点后两位,需要四舍五入
2,
0);
--保留小数点后两位,0为默认值,表示进行四舍五入
1);
--保留小数点后两位,不需要四舍五入,这里除0以外都是有同样的效果
--150.46000
--150.45000
对字段出现NULL值的处理
--判断某些字段是否为空
--case
case
when
字段名'
then
\N'
else
convert(varchar(20),'
end
NewName'
convert(varchar(20),null)
2005:
coalesce
coalesce('
字符串类型字段'
coalesce(convert(varchar(20),'
非字符串类型字段'
),'
coalesce(convert(varchar(20),null),'
--coalesce,返回其参数中的第一个非空表达式
Coalesce(null,null,1,2,null)union
Coalesce(null,11,12,13,null)union
Coalesce(111,112,113,114,null)
count的几种情况
--第一种
count(*)
tablename
--第二种
count(ID)
--第三种,1换成其它值也是可以的
count
(1)
/*
--第四种,这个不存在性能问题
idint
表ID(如果
indid
或255)。
否则为索引所属表的ID
Indid
smallint
索引ID:
0=表
1=聚簇索引
1=非聚簇索引
255=具有text或image数据的表条目。
rows
int
基于indid=0
和
indid=1地数据级行数,该值对于indid>
1重复。
如果indid=255,rows设置为0。
当表没有聚簇索引时,Indid
否则为
1。
rows,indid
sysindexes
id
object_id('
tablename'
indid
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 实用 SQL 脚本
![提示](https://static.bdocx.com/images/bang_tan.gif)