一.准备需转为HMLT字符串的DataTable数据 在数据库中执行一段SQL返回的数据 需转换后的HTML的文本 <html ><head></head><body> <style> table,table tr th, table tr td { border:1px solid #0094ff;padding: 0px 10px } table { min-height: 25px; line-height: 25px; text-alig…
一.准备需转为json字符串的DataTable数据 在数据库中执行一段SQL返回的数据 需转换后的JSON字符串的效果 [{"TechName":"开料","ItemName":"综合利用率是否为最高","ItemPara":"/"},{"TechName":"开料","ItemName":"综合利用率",…
在PCB业务系统中,数据库中的数据总是被应用端主动连接数据库并操作数据,是否想过可以让数据库主动的将数据推送出去呢! 答应其实是可以的.比如有这样的应用场景! 当SQL SERVER数据库满足某个条件时,可以让数据库主动的将消息发送出去! 例如:数据库中的某个字段的数据发生变化或客户端触发了某个存储过程时(必须有触发点或任务计划),这时数据库可以主动的将信息发送到其它业务系统或监控平台等系统.下面介绍SQL方式用Socket发送消息. 一.C#写SQL SERVER(CLR)实现Socket发送…
一.C#写SQL SERVER(CLR)实现文件操作 标量函数: 文件移动 ,复制,检测文件存在,写入新文件文本,读取文本,创建目录,删除目录,检测目录是否存在 /// <summary> /// 将现有文件复制到新文件.允许覆盖同名的文件. /// </summary> /// <param name="sourceFileName">要复制的文件</param> /// <param name="destFileNam…
将字符串分割为表表经常用到,这里 SQL表值函数与CLR  表值函数,两种实现方法例出来如下: SELECT * FROM FP_EMSDB_PUB.dbo.SqlSplit('/','1oz/1.5oz/2oz/3oz') 效果如下: SQL实现表值函数 CREATE FUNCTION [dbo].[splitStr]( @s varchar(max), --待分拆的字符串 ) --数据分隔符 ),), col varchar(max)) --建立临时表保存分割后的字符 AS BEGIN DE…
调用 MS SQL 标量值函数,应该在函数前面加上 "dbo.",否则会报 “不是可以识别的 内置函数名称”错误.例如 DECLARE @WhichDB TINYINT;     SELECT @WhichDB = dbo. user_GetWhichDB(1);--看看是哪个数据库的 另外,标量值函数就相当于一个变量 ,而不是一个表 ,所以这样写是错误的: SELECT * FROM dbo. user_GetWhichDB(1); 应该这样写: SELECT dbo. user_G…
MS SQL自定义函数IsPositiveInteger   判断字符串是否为正整数,0开始的的数字不算. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[svf_IsPositiveInteger] ( @string NVARCHAR(MAX) ) RETURNS BIT --函数返BIT数据类型,是数字返回1,非数字返回0. AS BEGIN DECLARE @rtv BIT = 1 DECLA…
其中一篇 博文中有写<PCB MS SQL 排序应用---相邻数据且相同合并处理>此篇有也应相用也同的技巧,实现相邻数据区间值求解 示例: 原数据:处理前 求出区间值:处理后 SQL 代码实现 )) ,'沉铜') ,'钻孔') ,'钻孔') ,'钻孔') ,'沉铜') ,'沉铜') ,'沉铜') ,'钻孔') ,'沉铜') ,'钻孔') ,'钻孔') ,'钻孔') SELECT * FROM @table SELECT min(RowNo) minRank,MAX(RowNo) maxRank…
用CLR写函数:标量函数,表值函数 很好理解,如果用聚合函数则不是那么好理解了, 这里将CLR函数说明一下,其实关键是对聚合函数说明 用CLR写聚合函数关键点,是要理解CLR与SQL是如何进行数据交互的, 第一步:聚合函数中各函数的作用 第二步:聚合函数调用顺序 第三步:聚合函数在实际SQL中调用次数 注意:将CLR 变量数据输时,数据类型是对象或List时,请在Write方法时转换好,如果在Terminate转换会报错. 正确转换如下所示: /// <summary> /// 写 /// &…
标量函数 ),)) returns int as begin return (select UserID from UserInfo where UserName=@UserName and UserPass=@UserPass) end; 调用: create procedure [dbo].[GetUserRole] ), ), @FuncID int AS set nocount on declare @UserID int set @UserID=Admin.dbo.UserIDFrom…
一.准备需转为DataTable的json字符串 原json字符串数据 [{"TechName":"ECN","TechNo":"EC_01","id":"1"},{"TechName":"流程指示","TechNo":"PI_01","id":"2"},{"…
Create FUNCTION [dbo].[SplitIndex] ( @str AS VARCHAR(max), @Index AS INT, ) = '/' ) ) AS BEGIN ) --待分拆的字符串 ,), col varchar(max)) --建立临时表保存分割后的字符 DECLARE @splitlen INT BEGIN )) ,CHARINDEX(@SplitChar,@str)+@splitlen,'') END INSERT @tab VALUES(@str) SEL…
Create FUNCTION [dbo].[SplitTable]( @s varchar(max), --待分拆的字符串 ) --数据分隔符 ),), col varchar(max)) --建立临时表保存分割后的字符 AS BEGIN DECLARE @splitlen int BEGIN )) ,CHARINDEX(@split,@s)+@splitlen,'') END INSERT @re VALUES(@s) RETURN END 示例: SELECT * FROM [dbo].[…
select day(createtime) from life_unite_product     --取时间字段的天值 select month(createtime) from life_unite_product   --取时间字段的月值 select year(createtime) from life_unite_product    --取时间字段的年值 select datepart(yy,createtime) from life_unite_product     --取时间…
select day(createtime) from life_unite_product --取时间字段的天值 select month(createtime) from life_unite_product --取时间字段的月值 select year(createtime) from life_unite_product --取时间字段的年值 select datepart(yy,createtime) from life_unite_product --取时间字段的年值 select…
select day(createtime) from life_unite_product     --取时间字段的天值 select month(createtime) from life_unite_product   --取时间字段的月值 select year(createtime) from life_unite_product    --取时间字段的年值 select datepart(yy,createtime) from life_unite_product     --取时间…
PCB由于业务关系复杂,业务触发一个事件时,可能需与数据库多个表进行关连处理才能拿到数据结果, 而表关连并不是简单的关连,实际是要进行大量数据筛选,逻辑判断,转换等过程...这个过程是复杂的 想一想,如果将大量数据传到客户端处理,这宽带压力也是挺大的,所以折中选择放到有部份业务逻辑放在存储过程处理了. 但这样一来,存储过程修改无法追溯了,在这里介绍一款工具,管理存储过程修改追溯,挺实用的.呵呵 一.SQL SERVER版本管制工具下载地址 source_safe_for_sql_server.z…
  select day(createtime) from life_unite_product     --取时间字段的天值 select month(createtime) from life_unite_product   --取时间字段的月值 select year(createtime) from life_unite_product    --取时间字段的年值   select datepart(yy,createtime) from life_unite_product     -…
可以写一个函数: 主要是使用正则来判断.另外输入字符是空的话,使用"-"来替换. CREATE FUNCTION [dbo].[svf_NonNegativeInteger] ( ) ) RETURNS BIT AS BEGIN DECLARE SET @val = ISNULL(LTRIM(RTRIM(@val)), N'-') IF @val LIKE '%[^0-9]%' OR @val = N'' ELSE RETURN @rtv END Source Code 实例说明:…
判断字符串是否为正整数,0开始的的数字不算. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[svf_IsPositiveInteger] ( @string NVARCHAR(MAX) ) RETURNS BIT --函数返BIT数据类型,是数字返回1,非数字返回0. AS BEGIN DECLARE @str NVARCHAR(MAX) = LTRIM(RTRIM(ISNULL(@string,'…
判断字符串是否为纯数字,负数不算.如'00012','54585','1000' SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[svf_IsNumeric] ( @string NVARCHAR(MAX) ) RETURNS BIT --函数返BIT数据类型,是数字返回1,非数字返回0. AS BEGIN DECLARE @str NVARCHAR(MAX) = LTRIM(RTRIM(ISNULL…
今天在预审完成时报如下错误,此错误原因是由于SQL Server数据字段存在小写,而Oracle数据库需大写导致的, 怎么解决这个问题了,非常简单 .这里将SQL贴出来 . 1.将生产型号中含有小写字母的查出来--只过滤硬板,FPC不包含在内 --将生产型号中含有小写字母的查出来--只过滤硬板,FPC不包含在内 2.将生产型号中含有小写字母批量更新为大写--只过滤硬板,FPC不包含在内 --将生产型号中含有小写字母批量更新为大写--只过滤硬板,FPC不包含在内 update mktxhglb S…
一.SQL跨库执行SQL 获取返回值 ) DECLARE @sql nvarchar(MAX) DECLARE @layer INT SET @Dblink = 'P2.fp_db.dbo.' select @sql='SELECT top 1 @layer=layer FROM ' + @Dblink + 'mktxhglb WHERE pdctno= ''at00101ca0''' exec sp_executesql @sql, N'@layer int output ',@layer o…
这是一个很有趣SQL数据处理应用,具体需求如下 ERP需要工程将物料编码相邻的编码合并求和BOM用量,巧妙的用到了已有排序号与分组排序号之间的差值求解 示例: 原数据: 要求转换: 实际转换后数据: SQL代码实现: with tab1 as ( as OPERATION_CODE,3.621000 UNIT_TIME UNION as OPERATION_CODE,3.621000 UNIT_TIME UNION as OPERATION_CODE,3.333000 UNIT_TIME UNI…
一.原数据: SELECT inman,indate FROM [fp_db].[dbo].[ppezhpbb] WHERE indate > '2016-5-1' AND indate < '2016-6-1' ORDER BY indate 二.转换后(动态拼接SQL): --数据先存临时表 SELECT inman,indate INTO #tab FROM [fp_db].[dbo].[ppezhpbb] WHERE indate > '2016-5-1' AND indate…
由于SQL Server允许为小写进入 ,导致数据库中存在小写,在数据集成到MES或ERP时报错,Oracle要求大写导致, 需转换为大写,可通过以下语句,查询所有小写数据,再更新.…
正式表:各字段内容获取 ) SET @tabname = 'ppeflow' SELECT @tabname AS '表名' ,(CASE ))+ ')' )) ) )) + ')' )) ) )) + ')' ELSE T.name END) AS '字段类型与容量' ,C.name as [字段名],T.name as [字段类型] ,convert(bit,C.IsNullable) as [可否为空] , FROM sysobjects where xtype='PK' and pare…
一.排序前,准备数据 --表变量 ),流程数 int) insert into @table union all union all union all union all --查看一下 select * from @table 二.排序后: select 生产型号,流程数, row_number() over(order by 流程数 desc) as [row_number], --流程数 倒顺 顺序递增 rank() over(order by 流程数 desc) as [rank], -…
一.原数据: SELECT inman,indate FROM [fp_db].[dbo].[ppezhpbb] WHERE indate > '2016-5-1' AND indate < '2016-6-1' ORDER BY indate 二.转换后: ), indate, ) indate, end) 罗定鹏, end) 王波, end) 廖观长, end) 林星, end) 萧洪发 FROM [fp_db].[dbo].[ppezhpbb] WHERE indate > '20…
前言 好好学习,天天向上. 正文 好像也是一个不难的问题,刚视频里看到的,就记一下吧. 下面是表中原始的数据结构,做了一个倒叙排序: select * from Employee order by Salary desc 首先来看一下如何取Salary第二的记录. --获取salary排行第二的人的信息 select top 1 * from Employee where Salary < (select max(salary) from Employee ) order by Salary d…