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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux操作寄存器前为什么要ioremap

1. 原因这里只考虑有 MMU 的芯片&#xff0c;Linux 为了实现进程虚拟地址空间&#xff0c;在启用 MMU 后&#xff0c;在内核中操作的都是虚拟地址&#xff0c;内核访问不到物理地址。如果在驱动里直接访问物理地址&#xff0c;等于访问了一个非法地址&#xff0c;会导致内核崩溃…

Loading页的实现代码

用了几种Loading页的代码&#xff0c;还是算这个好用了。真的佩服牛人们的思想。有的说用DIV来实现遮盖后面的东西&#xff0c;当FORM加载完后&#xff0c;执行CLOSE()d的JS函数。我试验了几次&#xff0c;效果不是那么好。也主要是由于我吧东西都放在我本地&#xff0c;感觉不…

Fibonacci数列

问题描述Fibonacci数列的递推公式为&#xff1a;FnFn-1Fn-2&#xff0c;其中F1F21。 当n比较大时&#xff0c;Fn也非常大&#xff0c;现在我们想知道&#xff0c;Fn除以10007的余数是多少。 输入格式输入包含一个整数n。输出格式输出一行&#xff0c;包含一个整数&#xff0c;表…

C语言——关键字

C语言——关键字 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 【谨记&#xff1a;尽量不要用printf函数&#xff0c;要去看变量的值&#xff0c;内存的值。】 auto&#xff0c;int&#xff0c;double&#xff0c;long&#xff0c;char&#xff0c;fl…

调色板栅格数据使用GDAL时注意

这几天用GDAL处理DRG数据时发现&#xff0c;有数据被处理成了黑板&#xff0c;什么都没有&#xff0c;发现是因为DRG图像颜色比较简单&#xff0c;使用了调色板的缘故。 使用SetColorTable将调色板写入后&#xff0c;一部分基本正常&#xff0c;但还有些图像还是有黑板的现象。…

jQuery实现表格行上移下移和置顶

<!DOCTYPE HTML> <html> <head> <meta charset"utf-8"> <meta name"viewport" content"widthdevice-width, initial-scale1, maximum-scale1"> <title>jQuery实现表格行上移下移和置顶</title> <m…

做算法,为什么建议你一定要学懂C++?

在工业界&#xff0c;有这样一个规律&#xff1a;“ 但凡能用其他语言的都不会用C&#xff0c;只能用C的必然用C。”但是&#xff0c;C的学习和项目开发都比较困难。一个有经验的老手也经常搞出野指针&#xff0c;内存泄露等bug&#xff0c;包括我自己在学C的时候也非常痛苦。所…

顺序查找法

#include<stdio.h> #define KeyType int #define OtherType int #define List_size 100 typedef struct{KeyType key;OtherType other; }RecordType; typedef struct{RecordType r[List_size];int length; }Recordlist; int SeqSearch(Recordlist l,int k)//没有设置监视…

IT行业专业术语

IT行业专业术语 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 目前比较流行的开发语言有哪些&#xff1f; Java、C#(C Sharp)、C、C、JavaScript、PHP、Ruby、Python等 WEB端有哪些开发技术&#xff1f; Javascript、CSS、HTML、Ajax、Flex等 比较…

AI一键注释代码、阅读整个项目、转换编程语言。已开源!

获取github源码地址和国内url、key方式&#xff1a;在文章底部 大家好今天给大家介绍一款开源项目&#xff0c;这个项目是由渡码维护的&#xff0c;这个项目支持自己的大模型和使用openai两种方式&#xff0c;本文章介绍使用openai的方式&#xff01; 使用过程中发现两个问题…

为什么别人赚钱比自己容易?

之前的文章提到自己的一个同事&#xff0c;在一家公司干了10年&#xff0c;最近跳槽找了份5万薪水的工作&#xff0c;大家都很想听他的故事。为了方便记录&#xff0c;我叫他文哥文哥比我们一般的毕业生厉害&#xff0c;他比我大将近9岁&#xff0c;我在初中的时候他已经是一个…

Linux下遍历目录下的文件

方法1&#xff1a;http://tag.csdn.net/Article/ef431d9b-68b3-419f-9f85-1fb9279f904a.html//ListFile.cpp#include <stdio.h>#include <dirent.h>#include <sys/types.h>intmain(intargc, char*argv[]){ if (2 ! argc){ printf("Usage:ListFileSource…

折半查找

折半查找又为二分查找&#xff0c;对待查找的列表有两个要求&#xff1a;1.必须采用顺序存储结构。 2.必须按关键字大小顺序排列。 #include<stdio.h> #define Max 100 typedef struct {int key;int other; }RecordType; typedef struct {RecordType r[Max];int lenght; …

15张图来了解【树】,面试再也不怕被刷了

我之前的文章C语言实现树&#xff0c;你一定看得懂树的概念什么是树&#xff1f;树属于非线性数据结构的一种&#xff0c;概念也极多&#xff0c;是由结点或顶点和边组成的且不存在着任何环的一种数据结构。没有结点的树称为空树。一棵非空的树包括一个根结点&#xff0c;还很可…

String源码图

String StringBuffer StringBuilder 均为对字符数组的操作。 实现了不同的接口&#xff0c;导致不同的覆写。 实现了同样的接口&#xff0c;适应不同的场景。 转载于:https://www.cnblogs.com/zhengwenqiang/p/8076495.html

C语言——位操作

C语言——位操作 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、基本位操作 | 或 & 与 ~ 取反 ^ 异或 << 左移 >> 右移 二、位操作的常见用法 1.获取某位的值 #define BitGet(Number,pos) ((Number)| 1<<(…

架构设计中的方法学(七)

十三、代码验证   要保证架构的稳定和成功&#xff0c;利用代码对架构进行验证是一种实用的手段。代码验证的核心是测试&#xff0c;特别是单元测试。而测试的基本操作思路是测试优先&#xff0c;它是敏捷方法中非常重要的一项实践&#xff0c;是重构和稳定核模式的重要保障。…

十进制转二进制,八进制,十六进制

十进制转二进制&#xff1a; #include<stdio.h> int main() {int a[20],x;int rem,i0;scanf("%d",&x);do{remx%2;xx/2;a[i]rem;i;}while(x!0);while(i>0)printf("%d",a[--i]);printf("\n");return 0; }十进制转八进制&#xff1a; …

呵,你会51单片机的精确延时吗?

文章整理自网络序对于某些对时间精度要求较高的程序&#xff0c;用 c 写延时显得有些力不从心&#xff0c;故需用到汇编程序。本人通过测试&#xff0c;总结了 51 的精确延时函数(在 c 语言中嵌入汇编)分享给大家。至于如何在 c 中嵌入汇编大家可以去网上查查&#xff0c;这方面…

SignalR

原址: http://www.cnblogs.com/shanyou/archive/2012/07/28/2613693.html SignalR是什么&#xff1f; SignalR是一个继承的客户端与服务器库&#xff0c;基于浏览器的客户端和基于ASP.NET的服务器组件可以借助它来进行双向多步对话&#xff0c;换句话说&#xff0c;该对话可不…