SQLServer技巧
-2.批量更新:
UPDATE p_ProductTab SET PC4=p.pc4
from (select productid='030301102000',pc4='423523' union all
select productid='030301102001',pc4='sdgser'
) as p
WHERE p_ProductTab.productid=p.productid
-1.保留2位小数
Convert(decimal(18,2),字段) 长度为18位,2位小数
0.null的判断
case when 字段名 is null then ** else ** end
将null替换为0: isnull(字段名,0)
1.搜索替换某个字段里的字符串
方法一:varchar和nvarchar类型是支持replace,所以如果你的text不超过8000可以先转换成前面两种类型再使用replace 替换 text ntext 数据类型字段的语句 。
update
表名
set
字段名=
replace
(
cast
(与前面一样的字段名
as
varchar
(8000)) ,
'原本内容'
,
'想要替换成什么')
方法二:update
[表名]
set
字段名 =
replace
(与前面一样的字段名,
'原本内容'
,
'想要替换成什么')
例子:UPDATE p_ProductTab SET Spec=replace(Spec,',',',') where spec like N'%,%' COLLATE Chinese_PRC_CI_AS_WS
COLLATE Chinese_PRC_CI_AS_WS 全角和半角的指定
2.截取某个字段中的值
select substring(prlstr4,patindex('%合同号%',prlstr4)+4,6) as PO,substring(prlstr4,patindex('%客户料号%',prlstr4)+5,7) as PN,substring(prlstr4,patindex('%REV%',prlstr4)+4,3) as REV,substring(prlstr4,patindex('%其他要求%',prlstr4)+5,1000) as other
from (select top 5000 prlstr4 from OA_OrderBillDetailOriginalTab with(nolock) order by Id desc) b
where prlstr4 like '%1245991%'
3.获取自增长ID
select scope_identity()
4.初始化自增长ID,删除所有数据
truncate table tbname
5 .多条插入
INSERT INTO fp_TiaoXianSpec
select '1277661','ASY,ATTACHED ROUND CABLE,SMF,MPO-MPO,STD FERRULE,1m' union all
select '1277662','ASY,ATTACHED ROUND CABLE,SMF,MPO-MPO,STD FERRULE,2m' union all
select '1277663','ASY,ATTACHED ROUND CABLE,SMF,MPO-MPO,STD FERRULE,3m'
用于插入excel数据时,先在excel中处理字符串,然后copy到SQL查询器中
excel中连接字符串公式 =CONCATENATE("select ",A101,",'0",B101,"','",C101,"','','' union all")
数字转换成字符串公式 =TEXT(A6,"####")
还可以利用select 生成临时表:
join (select product='030301101660',amount=100 union all
select product='030301101561',amount=200 union all
select product='030301101462',amount=300 union all
select product='030301101363',amount=400)
6.获取系统时间getdate(),还可以进行计算getdate()-1等,后面的单位为天
7.生成数据字典
use fpErp --指定要生成数据字典的数据库
go
SELECT
表名=case when a.colorder=1 then d.name else '' end,
表说明=case when a.colorder=1 then isnull(f.value,'') else '' end,
字段序号=a.colorder,
字段名=a.name,
标识=case when COLUMNPROPERTY(a.id,a.name,'IsIdentity')=1 then '√'else '' end,
主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and name in (
SELECT name FROM sysindexes WHERE indid in(
SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid
))) then '√' else '' end,
类型=b.name,
占用字节数=a.length,
长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),
小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
允许空=case when a.isnullable=1 then '√'else '' end,
默认值=isnull(e.text,''),
字段说明=isnull(g.[value],'')
FROM syscolumns a
left join systypes b on a.xtype=b.xusertype
inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
left join syscomments e on a.cdefault=e.id
left join sys.extended_properties g on a.id=g.major_id and a.colid=g.minor_id
left join sys.extended_properties f on d.id=f.major_id and f.minor_id =0
--where d.name='要查询的表' --如果只查询指定表,加上此条件
order by a.id,a.colorder
8.字符串截取与搜索特定字符位置
select id,fileNo,fileName,transdept,transdetail,transdone,returndetail,returndone,opdate,skfileid,fileid from fp_filehistory
where filemedia='1' and transdone='1' and CONVERT(datetime,SUBSTRING(transdetail,5,charindex(' ',transdetail)-5)) between getdate()-1 and getdate()
9.行列转换例子:
student course grade
--------- ---------- --------
student1 语文 50
student1 数学 60
student1 英语 40
student2 语文 30
student2 数学 40
student2 英语 50
select student,
max(case course when '语文' then grade else 0 end) as "语文",
max(case course when '数学' then grade else 0 end) as "数学",
max(case course when '英语' then grade else 0 end) as "英语"
from fp_colrol
group by student
结果
student1 82 65 75
student2 74 96 0
9.将表数据分组并合并列为一行:
select aa.*,bb.projmem from fp_projma aa
left join (select a.projno, STUFF(( SELECT ';' + projmem
FROM fp_projmem b
WHERE a.projno = b.projno
FOR XML PATH('')), 1, 1, '') AS projmem
FROM fp_projmem a GROUP BY a.projno) bb on bb.projno=aa.projno
例子:
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([nameid] nvarchar(24),[subject] nvarchar(22),[passy] nvarchar(21))
Insert #T
select N'A001',N'语文',N'Y' union all
select N'A001',N'数学',N'N' union all
select N'A002',N'语文',N'N' union all
select N'A002',N'英语',N'Y'
Go
--测试数据结束
SELECT a.nameid ,
STUFF(( SELECT ';' + [subject] + [passy]
FROM #T b
WHERE a.[nameid] = b.[nameid]
FOR
XML PATH('')
), 1, 1, '') AS type
FROM #T a
GROUP BY a.nameid
转载于:https://www.cnblogs.com/yc-shen/p/8072896.html
SQLServer技巧相关推荐
- SQLserver技巧 年份判断,以及向上想下取整
SELECT [出厂日期],DATEDIFF(month,出厂日期,getdate())*1.0/12 as '使用年限/年' ---------得到的结果实际(浮点),cast(DATEDIFF(m ...
- sql server 2005数据库
尝试了很多方法,最后的问题是--主机名后面必须加上数据库实例名称(主机名\数据库实例).之前一直是点击查询分析器sqlserver右边的按钮自动查找的,或者直接填写"."或是&qu ...
- sqlserver数据库操作大全——常用语句/技巧集锦/经典语句
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ ☆ ☆ ☆ sql 宝 典 ☆ ☆ ☆ 2012年-8月 修订版 ☆ ☆ 修订人:情谊续写经典 ☆ ☆ 郑重 ...
- mysql sqlserver 性能优化_SQLSERVER SQL性能优化技巧
1.选择最有效率的表名顺序(只在基于规则的优化器中有效) SQLSERVER的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表driving table)将被最 ...
- sqlserver拼接sql插入table_10个SQL技巧
介 绍 为了理解这 10 个 SQL 技巧的价值,首先需要了解下 SQL 语言的上下文.为什么我要在 Java 会议上讨论 SQL 呢?(我可能是唯一一个在 Java 会议上讨论 SQL 的了)下面讲 ...
- SqlServer 使用小技巧
1.在sqlserver下直接画ER图 步骤:点击数据关系图 右击新建数据关系图这样就ok 了 2,查看表的设计结构或表中的数据 步骤:右击选择设计或查看前百行 3,监测程序对数据库的操作 点击工具 ...
- 桂林老兵的SQLSERVER高级注入技巧
现在将老兵本人多年的SQLSERVER注入高级技巧奉献给支持老兵的朋友: 前言: 即是高级技巧,其它基本的注入方法就不详述了. 看不懂可查本站的注入基础文章. 为了更好的用好注入,建议大家看看本站的S ...
- oracle补丁版本查看的sql,Oracle、SQLServer、ArcSDE怎么查看版本、补丁 - ArcGIS技巧研讨 - 博客频道nbsp...
在我们安装ArcSDE时都会首先要查看体系需求,只有这样,传奇土城花补丁,才干保证我们的服务器环境运行比拟稳固,以下是先容在应用不同数据库中怎么查看相应的安装版本,以及相干的安装补丁. Oracle ...
- sqlserver 没有备份误删数据_超实用的Word备份和恢复技巧,职场必备,为你的文件保驾护航!...
我们平常在使用Word的时候,是不是经常遇到这样的尴尬: 刚做好的2000字分析报告,突然电脑黑屏,忘记保存OMG-- 修改文档后忘记另存为,点了保存,原来的被覆盖了-- 写好的文档保存一半,Word ...
最新文章
- 开源一些Delphi系统:mp3play
- jq点击所有子元素_jQuery删除/清空指定元素下的所有子节点的方法
- 11.20 yum:自动化RPM包管理工具
- jquery事件重复绑定的几种解决方法 (二)
- 数组精选题目三连(6)
- 现代软件工程系列 学生读后感 梦断代码 DTSlob (1)
- oracle监听服务无法启动不了,关于ORACLE监听服务无法启动的问题
- VB 判断是否文本文件
- Office web component learning ---- Spreadsheet learning
- amd编码器 hevc_Bandicam支持Nvidia NVENC编码器(H264, HEVC) - Bandicam(班迪录屏)
- 得力助手 消防员的 消防机器人_机器人化身消防员“得力助手”,进入危险火场执行工作|机器人日报...
- 眼见不一定为实,电阻、电容和电感的实际等效模型
- 微软Kinect完全拆解
- 微信/支付宝app支付相关参数
- 通过securecrt连接ubuntu12.04不能使用insert键及配色问题
- 团队如何限制合适的在制品(WIP)数量
- arcgis 图层概念
- 虚拟机给openwrt添加硬盘并且配置smb
- MySQL数据库文件转化为Word表格做论文/报告
- hive_Decimal64ColumnVector cannot be cast to org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVect