-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技巧相关推荐

  1. SQLserver技巧 年份判断,以及向上想下取整

    SELECT [出厂日期],DATEDIFF(month,出厂日期,getdate())*1.0/12 as '使用年限/年' ---------得到的结果实际(浮点),cast(DATEDIFF(m ...

  2. sql server 2005数据库

    尝试了很多方法,最后的问题是--主机名后面必须加上数据库实例名称(主机名\数据库实例).之前一直是点击查询分析器sqlserver右边的按钮自动查找的,或者直接填写"."或是&qu ...

  3. sqlserver数据库操作大全——常用语句/技巧集锦/经典语句

    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ ☆ ☆ ☆ sql 宝 典 ☆ ☆ ☆ 2012年-8月 修订版 ☆ ☆ 修订人:情谊续写经典 ☆ ☆ 郑重 ...

  4. mysql sqlserver 性能优化_SQLSERVER SQL性能优化技巧

    1.选择最有效率的表名顺序(只在基于规则的优化器中有效) SQLSERVER的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表driving table)将被最 ...

  5. sqlserver拼接sql插入table_10个SQL技巧

    介 绍 为了理解这 10 个 SQL 技巧的价值,首先需要了解下 SQL 语言的上下文.为什么我要在 Java 会议上讨论 SQL 呢?(我可能是唯一一个在 Java 会议上讨论 SQL 的了)下面讲 ...

  6. SqlServer 使用小技巧

    1.在sqlserver下直接画ER图 步骤:点击数据关系图 右击新建数据关系图这样就ok 了 2,查看表的设计结构或表中的数据 步骤:右击选择设计或查看前百行 3,监测程序对数据库的操作 点击工具 ...

  7. 桂林老兵的SQLSERVER高级注入技巧

    现在将老兵本人多年的SQLSERVER注入高级技巧奉献给支持老兵的朋友: 前言: 即是高级技巧,其它基本的注入方法就不详述了. 看不懂可查本站的注入基础文章. 为了更好的用好注入,建议大家看看本站的S ...

  8. oracle补丁版本查看的sql,Oracle、SQLServer、ArcSDE怎么查看版本、补丁 - ArcGIS技巧研讨 - 博客频道nbsp...

    在我们安装ArcSDE时都会首先要查看体系需求,只有这样,传奇土城花补丁,才干保证我们的服务器环境运行比拟稳固,以下是先容在应用不同数据库中怎么查看相应的安装版本,以及相干的安装补丁. Oracle ...

  9. sqlserver 没有备份误删数据_超实用的Word备份和恢复技巧,职场必备,为你的文件保驾护航!...

    我们平常在使用Word的时候,是不是经常遇到这样的尴尬: 刚做好的2000字分析报告,突然电脑黑屏,忘记保存OMG-- 修改文档后忘记另存为,点了保存,原来的被覆盖了-- 写好的文档保存一半,Word ...

最新文章

  1. 开源一些Delphi系统:mp3play
  2. jq点击所有子元素_jQuery删除/清空指定元素下的所有子节点的方法
  3. 11.20 yum:自动化RPM包管理工具
  4. jquery事件重复绑定的几种解决方法 (二)
  5. 数组精选题目三连(6)
  6. 现代软件工程系列 学生读后感 梦断代码 DTSlob (1)
  7. oracle监听服务无法启动不了,关于ORACLE监听服务无法启动的问题
  8. VB 判断是否文本文件
  9. Office web component learning ---- Spreadsheet learning
  10. amd编码器 hevc_Bandicam支持Nvidia NVENC编码器(H264, HEVC) - Bandicam(班迪录屏)
  11. 得力助手 消防员的 消防机器人_机器人化身消防员“得力助手”,进入危险火场执行工作|机器人日报...
  12. 眼见不一定为实,电阻、电容和电感的实际等效模型
  13. 微软Kinect完全拆解
  14. 微信/支付宝app支付相关参数
  15. 通过securecrt连接ubuntu12.04不能使用insert键及配色问题
  16. 团队如何限制合适的在制品(WIP)数量
  17. arcgis 图层概念
  18. 虚拟机给openwrt添加硬盘并且配置smb
  19. MySQL数据库文件转化为Word表格做论文/报告
  20. hive_Decimal64ColumnVector cannot be cast to org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVect

热门文章

  1. editplus 快捷键
  2. 1837Balance
  3. 使用jQuery queue(队列) 遇到的问题及解决方案
  4. Spring Boot 整合Mybatis (一)
  5. 因为我想在博客园长呆,所以给博客园提一些改进建议
  6. ScrollView常用(暂时用上了的)代理方法
  7. Minify框架分析,主要功能类简介
  8. 九江机器人餐厅_机器人精通200道佳肴 九江学院来了多位机器厨神
  9. pycharm 离线安装插件
  10. 链表(Linked List)之单链表