![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SQL
雨水霂
ERP开发与应用技术工程师物联网工程师供应链管理高级顾问
展开
-
加密密码在连接数据前进行解密,重新生成带解密后的密码的字符串的SQLHELPER
// 加密密码在连接数据前进行解密,重新生成带解密后的密码的字符串。原创 2022-10-21 19:21:29 · 364 阅读 · 0 评论 -
两个时间点的时间差,超过30分钟算一小时的语法
select DATEDIFF(DAY,'2021-10-31 14:00:00','2021-10-31 23:45:00') as '天数差' select DATEDIFF(HOUR,'2021-10-31 14:00:00','2021-10-31 23:45:00')-4 as '小时差(舍弃后面的分钟数)'select DATEDIFF(MINUTE,'2021-10-31 14:00:00','2021-10-31 23:45:00')-240 as '分钟差'select RO.原创 2021-12-10 16:58:55 · 1046 阅读 · 0 评论 -
查询某个表的字段及字段说明的脚本
use [数据库名]SELECT a.[name] as '字段名',a.length '长度',c.[name] '类型',e.value as '字段说明' FROM syscolumns aleft join systypes b on a.xusertype=b.xusertypeleft join systypes c on a.xtype = c.xusertypeinner join sysob...原创 2021-11-22 22:08:07 · 140 阅读 · 0 评论 -
SQL存储过程直接传表
将数据表传递给SQL Server中的存储过程创建一个表:CREATE TABLE dbo.TestTableVariable( ID INT IDENTITY(1,1) primary key, Name VARCHAR(10), Addr VARCHAR(10))创建需要传的表:1 CREATE TYPE dbo.TableVariable AS TABLE2 (3 ID INT4 )插入一些默...原创 2021-05-08 04:55:33 · 603 阅读 · 0 评论 -
查数据库中所有包含了某个字符串的触发器的SQL语句
比如:查所有含有 GDMTL 的触发器:set nocount onCreate table #y (Trname varchar(50),txt text)select name, iid = identity(int,1,1) into #x from SysObjects where xtype = 'TR'declare @i int, @max intdeclare @name varchar(50)set @i = 1select @max = max(iid) from #x原创 2020-11-13 08:23:28 · 888 阅读 · 0 评论 -
查数据库中所有包含了某个字符串的存储过程的SQL语句
select namefrom sysobjects o, syscomments swhere o.id = s.idand text like '%F_GetSomeCode%'and o.xtype = 'P'SELECT ROUTINE_NAME, ROUTINE_DEFINITIONFROM INFORMATION_SCHEMA.ROUTINESWHERE ROUTINE_DEFINITION LIKE '%ZHMTL%'AND ROUTINE_TYPE='...原创 2020-11-11 15:35:41 · 736 阅读 · 0 评论 -
SQL,要让结果为小数
select convert(dec(18,3),convert(dec(18,3),(29.9-20))/convert(dec(18,3),20))convert(dec(18,3),convert(dec(18,3),(b.PintoQty-b.Qty))/convert(dec(18,3),b.Qty)) AS PintoTate,原创 2020-10-10 08:32:09 · 348 阅读 · 0 评论 -
一个日期字段格式变成一个日期时间字段格式且精确到秒
d.SendDate, --日期时间字段,d.NeedDate, --日期字段,DATEADD(hh, 23, DATEADD(mi, 59, DATEADD(ss, 59, CONVERT(datetime, d.NeedDate)))) AS NeedDate, --变成日期时间字段值CASE WHEN (DATEADD(hh, 23, DATEADD(mi, 59, DATEADD(ss, 59...原创 2020-07-01 15:53:03 · 429 阅读 · 0 评论 -
查询结果是多行明细时,取第二行的SQL脚本
查询结果是多行明细时,取第一行的SQL脚本select top 1 GoodsCode,PhaseFactory,* from TBOPhasein where GoodsCode = 'D69588' order by BillMakeDate desc select top 1 PhaseFactory from TBOPhasein where GoodsCode = 'D69588' order by BillMakeDate desc查询结果是多行明细时,取第二...原创 2020-06-14 16:47:02 · 773 阅读 · 0 评论 -
SQL在全部存储过程中搜索/查找指定关键词
--在全部存储过程中搜索/查找指定关键词selectb.name,a.textfromdbo.syscommentsa,dbo.sysobjectsbwherea.id=b.idandb.xtype='p'anda.textlike'%abc%'-----列出有关键词‘abc’的存储过程--搜索/查找带有某关键字的触发器selectb.name,a.textfromdbo.syscommentsa,dbo.sysobjects...原创 2020-06-01 10:53:35 · 2770 阅读 · 0 评论 -
查数据库大小及表大小
--查数据库大小EXEC sp_spaceused--查数据库中各表的大小---数据库各表大小SET NOCOUNT ONDECLARE @tablename VARCHAR(255)DECLARE table_list_cursor CURSORFOR SELECT name FROM sys.tables ORDER BY na...原创 2020-03-04 15:34:45 · 466 阅读 · 0 评论 -
SQL分割字符串详解
SQL分割字符串详解 T-SQL对字符串的处理能力比较弱,比如我要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历很简单,但是T-SQL不支持数组,所以处理下来比较麻烦。下边的函数,实现了象数组一样去处理字符串。一,用临时表作为数组。create function f_split(@c varchar(2000),@split varchar(2))转载 2017-06-14 16:00:00 · 3052 阅读 · 0 评论 -
存储过程中XACT_ABORT 用法
XACT_ABORT 用法首先创建一张表Create Table TranTable( Id INT IDENTITY(1,1) PRIMARY KEY, Priority TINYINT--最大值255)1.再执行下面的语句:set XACT_ABORT ON begin tran INSERT INTO TranTable VALUES(1...转载 2019-06-19 08:22:48 · 4146 阅读 · 0 评论 -
两台服务器之间建立dblink的SQL写法
查询当前服务器数据库的所有跨服务器数据库的连接select * from sys.servers EXEC sp_addlinkedserver 'ITSV','','SQLOLEDB','远程服务器名或IP地址' EXEC sp_addlinkedsrvlogin 'ITSV','false',NULL,'sa或其他用户名','密码'所建立的ITSV可在服务...原创 2013-08-08 10:49:00 · 1468 阅读 · 0 评论 -
c#+dev+sql展示行转列报表
private void btnQuery_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < dataGridView1.Rows.Count; i++)...原创 2019-10-31 09:33:36 · 266 阅读 · 0 评论 -
用cursor提取表中所需的数据插入新临时表
declare @khdm varchar(10)set @khdm = '1001wyn'create table #tempTb(tdbh varchar(15),tdbhCl varchar(15),wlbh varchar(30),ye decimal(18, 2))declare @tdbh varchar(15)declare @wlbh varchar(30)原创 2018-01-22 13:45:53 · 738 阅读 · 0 评论 -
sql中,被除字段为0或NULL时,怎样处理?用case when
sql中,被除字段为0或NULL时,怎样处理?用case when举例如下:select scrq,left(gongD,3) gongD,sum(JSL) gdJSL,SUM(JpcSL) gdJpcSL,cast(isnull(cast(SUM(JpcSL)/sum((case when (JSL is null or JSL=0 ) then 1 else JSL end)...原创 2019-10-31 09:44:13 · 2816 阅读 · 1 评论 -
(SQLServer调试)无法启动T-SQL调试。未能连接到计算机 ......
exec sp_addsrvrolemember 'DATATEST\Administrator', 'sysadmin'DATATEST\Administrator 是数据库服务器的PC名\登录名;如果还不行,则试下面的方法无法启动T-SQL调试。未能连接到计算机“.”1.要在服务器本机,不要远程2.服务器名称用电脑名称(cmd->hostname),不要用IP,(loc...原创 2019-06-19 08:56:23 · 6506 阅读 · 0 评论 -
(摘抄)SQLServer 中发布与订阅
在对数据库做迁移的时候,会有很多方法,用存储过程,job,也可以用开源工具kettle,那么今天这些天变接触到了一种新的方法,就是SqlServer中自带的发布与订阅。 首先说明一下数据复制的流程。如下图A是(192.168.210.170)上的数据库,B是(172.23.100.109)上的数据库。把B当作数据源,然后A从B上获取数据。 发布前准备:首先两个服务器之间要能...转载 2019-07-10 10:31:25 · 581 阅读 · 0 评论 -
(转)数据库 'tempdb' 的日志已满的解决方法
数据库 'tempdb' 的日志已满。请备份该数据库的事务日志以释放一些日志空间问题:一个使用SQLServer2000做后台的数据库在执行百万条纪录级数据导出的时候总报:“数据库 'tempdb' 的日志已满。请备份该数据库的事务日志以释放一些日志空间”事件查看里面的应用程序日志里也记录了同样的错误。事情原因:问题应该是往临时表里大批量的插入数据造成的,有黑客活动的迹象解决过程...转载 2019-07-15 15:58:31 · 5369 阅读 · 0 评论 -
自动处理数据库死锁
当数据库数据多,体积大,或者数据库结构设计庞杂,触发器多,此时会经常性的发生数据死锁。以下编写了一个自动处理数据库死锁的存储过程,供大家学习指正。---who表要先建好ALTER PROCEDURE [dbo].[usp_kill_lock]ASBEGINDELETE who INSERT INTO WhoEXEC sp_whoDECLARE @sp...原创 2019-08-05 09:32:55 · 651 阅读 · 0 评论 -
sql2000自定义函数时,函数脚本里不带系统自带的函数Getdate()的解决方法
sql2000自定义函数时,函数脚本里不带系统自带的函数Getdate()的解决方法:将Getdate()函数做成一个视图create view v_getdate as Select Getdate() as gdatego然后在自定义函数中使用这个视图,如:ALTER FUNCTION [dbo].[sqUseCarGetNo]() RETURNS ...原创 2019-07-31 17:22:46 · 375 阅读 · 0 评论 -
解决数据库日志文件过大的问题
随着数据库使用时间增长,日志文件也在不停的增大,这里介绍几种方法减小这个文件的方法。1.直接删除log文件分离数据库。分离数据库之前一定要做好数据库的全备份,选择数据库——右键——任务——分离,如下图将日志文件和数据文件复制粘贴到另外一个文件夹中以防万一。删除链接,如下图直接删除日志文件,然后再附加数据库,如下图附加的时候会自动将ldf文件和mdf文件都附加上,但是...转载 2019-08-06 15:54:29 · 8370 阅读 · 0 评论 -
ProcSqlHelper.cs
ProcSqlHelper与SqlHelper的区别:主要在于ProcSqlHelper还能调用存储过程,多了个CommandTypeusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Configuration;using原创 2013-06-28 14:40:30 · 750 阅读 · 0 评论 -
SQL2005\2008行转列脚本编写(表最后列加合计列或平均数列)
此例子的语句适用于 SQL2005 以上版本begindrop table #xstdmxFyselect 提单编号,物料名称+' '+规格型号 as 产品,sum(提单数量) 数量 into #xstdmxFyfrom View_XstdQuery where 是否核销 ='未发运' and 备注 not like '%测试%' and 是否记账 = '是原创 2017-06-14 09:12:52 · 1326 阅读 · 0 评论 -
SQL2005\2008行转列脚本编写(不加合计或平均数)
DECLARE @s NVARCHAR(4000) SELECT @s = ISNULL(@s + ',', '') + QUOTENAME(日期) FROM (select distinct 日期 from tb) as A ---列名不要重复 Declare @sql NVARCHAR(4000) SET @sql=' select r.* from原创 2016-11-30 14:42:53 · 496 阅读 · 0 评论 -
datediff结合cast函数求出两日期之间的年差、月差、日差
declare @Birthday varchar(10)set @Birthday = '2010-10-16'select abs(datediff(yy,getdate(),cast(@Birthday as datetime)))select abs(datediff(mm,getdate(),cast(@Birthday as datetime)))select abs(原创 2014-10-16 14:20:47 · 2890 阅读 · 0 评论 -
SQL SERVER 添加序号列
SQL SERVER 添加序号列select ROW_NUMBER() OVER(ORDER BY Convey_Fee desc) as z,rank() OVER(ORDER BY Convey_Fee desc) as z,DENSE_RANK() OVER(ORDER BY Convey_Fee desc) as z,NTILE(4) OVER(ORDER转载 2013-11-26 14:12:28 · 1261 阅读 · 0 评论 -
comboBox常用的基本用法
比如:物料基础资料维护中,单位字段是下拉列表comboBox,下拉列表要显示为单位表中的dwdm,dwmc,选择后控件中的内容应显示成dwmc,而取值时要取对应的dwdm存入数据库,则写法如下 加载数据源: Unit_Bll unit = new Unit_Bll(); comboBox3.DataSource = unit.select();原创 2013-10-08 11:03:51 · 5899 阅读 · 0 评论 -
C#用集合做 多条件搜索功能
private void simpleButton1_Click(object sender, EventArgs e) { if (radioButton2.Checked == true) { StringBuilder sql = new StringBuilder("select * f原创 2013-08-28 17:53:10 · 3162 阅读 · 0 评论 -
如果存在这个表,则删除这个表的各种sql写法
mysql: drop table if exists address_booksql2005:IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[表名]') AND type in (N'U'))DROP TABLE [dbo].[表名]sql2000:原创 2013-08-07 17:35:11 · 4616 阅读 · 1 评论 -
密码保存至后台表加密所需的MD5哈希值转换文件CommonHelper.Md5Encrypt
public static class CommonHelper { public static string Md5Encrypt(string pwd) { MD5 md5 = MD5.Create(); byte[] byts = System.Text.Encoding.UTF8.GetBytes(p原创 2013-07-23 10:52:47 · 1347 阅读 · 0 评论 -
根据一个字段录入值带出另一个字段值时,有空值的C#.NET处理
例如:根据用户号带出用户名称原创 2013-07-04 16:01:25 · 1377 阅读 · 0 评论 -
SQL Server死锁总结
1. 死锁原理 根据操作系统中的定义:死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态。 死锁的四个必要条件:互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。非剥夺条件(No p转载 2013-07-03 18:01:34 · 867 阅读 · 0 评论 -
SQL中KILL进程号语句在C#代码中调用
1、构建存储过程,把KILL 进程号写成@sqlALTER PROCEDURE [dbo].[usp_kill_spid]@sql NVARCHAR(20)ASBEGIN EXEC sp_executesql @sqlEND2、c#中写方法 public void KillSpid(string sql) {原创 2013-07-11 16:35:29 · 1389 阅读 · 0 评论 -
数据库死锁处理
sp_lock --查看数据表是否死锁,当mode字段值为X时,则表示数据库有死xssp_who --查哪个表锁住EXEC sp_who --查进程代号KILL 195 --进程代号原创 2013-07-02 11:31:31 · 785 阅读 · 0 评论 -
问题:“Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应。”的解决方法
方法1:优化你的SQL脚本或者存储过程,使其 在运行速度上 有所提升方法2:在配置文件中解决1、SqlConnection con = new SqlConnection("server=.;database=myDB;uid=sa;pwd=password;Connect Timeout=500")3、在Web.config配置文件中设置http请求运行时限间原创 2013-06-21 09:31:38 · 10006 阅读 · 0 评论 -
SQL2005/2008转到SQL2000的步骤
SQL2005/2008转到SQL2000的步骤 1. 生成for 2000版本的数据库脚本 2005/2008的manger studio -- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例 -- 右键要转到2000的库 -- 任务 -- 生成脚本 -- 在"脚本向导"的"选择数据库"中, 确定选择的是要转到2000的库 -- 勾选"为所选数据库中的原创 2013-04-08 09:13:23 · 840 阅读 · 0 评论 -
SqlServer查询数据库所有用户表的记录数
SqlServer查询数据库所有用户表的记录数--创建临时表 create table #temp(Recordcount int ,tableName varchar(30)) --用游标将查询的记录数,插入临时表declare @tablename varchar(30)declare @sql varchar(100转载 2013-03-29 16:19:30 · 1391 阅读 · 0 评论 -
安装vs2010后向sql2008添加SQL Server Management
安装vs2010后向sql2008添加SQL Server Management前提条件: 已经完全安装vs2010并安装成功!(安装过程中最好不要乱动!以防安装错误。如果安装错误,卸载起来会非常的麻烦。若卸载顺序不对,极容易造成系统瘫痪!)准备的安装包如下:1 SQLManagementStudio_x86_CHS(196M)2 WindowsXP-KB92614原创 2013-03-29 16:22:02 · 1036 阅读 · 0 评论