我们日常开发过程中,非常常见的一种需求,把某一个用逗号或者/或者其他符号作为间隔的字符串分隔成一张表数据. 在前面我们介绍了 [原创]SQL 把表中字段存储的逗号隔开内容转换成列表形式,当然按照这种方式转变一下也是可以实现的,但是我这里有以前我一直使用的另外一种方式,也记录一下吧. 依照惯例,我们首先来看看效果. 调用:SELECT Id FROM [Fn_StringSplitToTable]('1,12,36,65,58,56,DF',',') 具体函数如下: -- ==========…
PS:此博文是利用Windows Live Writer 2012编写,格式效果可能不太好. 在我开发过程中,遇到一个统计需求,结果是要求返回从当天起往回推算出自定义输入的天数 为此我写了一个表值函数来解决这一需求.现记录一下,也希望能帮助到一些也遇到此类问题的朋友. 首先我们看一下执行效果图: 返回最近十五天的数据,执行调用函数:SELECT * FROM [Fn_RunDay](-15) 具体函数如下: -- =========================================…
  今天我现在发现看一篇博文不能够太长,只要能够描述清楚自己想表达的东西,能够让大家知道你要讲什么就行了.因为我今天看了一些长篇博文,真的觉得知识点太多了, 会让人囫囵吞枣. 这篇博文跟我昨天发表的类似,同样是为了解决一个统计需求,结果是要求返回从当月起往回推算出自定义输入的月份 喜欢总结的我,为此写了一个表值函数来解决这一需求.现记录一下,也希望能帮助到一些也遇到此类问题的朋友. 首先我们看一下执行效果图: 返回最近一年即是十二个月的数据,执行调用函数:SELECT * FROM [Fn_Ru…
返回值为'1,2,3,4,5,6,7',是一个字符串,如果要用IN 查询的话sql认为这是一个完整的字符串,需要将内容分隔转换变成table 定义函数如下: create Function sysfStrToTable(@str varchar(1000)) Returns @tableName Table ( str2table varchar(50) ) As --该函数用于把一个用逗号分隔的多个数据字符串变成一个表的一列,例如字符串'1,2,3,4,5' 将变成一个表 Begin set…
跟以往类似,我依旧介绍一个我日常开发遇到的知识点,谨此记录一下,也希望能帮助到一些朋友. 这次我要介绍的是通过SQL函数返回你输入的两个时间点内的日期数据. 效果图如下: 执行函数:SELECT * FROM [Fn_RunSelectDay]('2015-01-01','2015-01-11') 具体函数如下: -- ============================================= -- 调用:SELECT * FROM [Fn_RunSelectDay]('2015…
一如往常一样,一篇简短博文记录开发过程中遇到的一个问题.初衷都是记录自己的一些Idea,也是希望能够帮助一些凑巧遇到此类需求的问题,这个需求的的开端是因为,要统计最近N周的销售数据. 接下来我们来看看执行函数的效果如下图: select  * from  [dbo].[Fn_RunWeek] (-12) 具体函数如下: -- ============================================= -- 调用: select  * from  [dbo].[Fn_RunWeek…
写法一: CREATE FUNCTION [dbo].[Split] ( @str VARCHAR(MAX), --传进来的字符串 ) --分割符 ) RETURNS @t TABLE --定义一个虚拟表 ( id , ), NAME VARCHAR(MAX) ) AS BEGIN -- 给分割符号@char前后加上 % 即 该字符串在@str里第一次出现的位置,起始值从1开始 -- patindex用法详见:http://www.cnblogs.com/moss_tan_jun/archive…
本文转自:http://www.lmwlove.com/ac/ID718 比如我们有一个字符串 ) select @appName ='UserID=admin,Account=ABC' 然后我们要以","为行分割符号,以"="为列分割符号将@appName分割成多行两列的格表数据. 也就是将上面的@appName值分割成 Name Value UserID admin AccountNumber ABC 这种格式的数据. 请教了很多朋友,下面将最简单的方法贴出来,…
/** * 把省的字符串转换成列表 * * @param province * @return */ private List<String> getProvinceList(String province) { List<String> result = new ArrayList<>(); if (StringUtils.isEmpty(province)) { return result; } int index = 0; int currIndex = prov…
SQL表值函数和标量值函数的区别 写sql存储过程经常需要调用一些函数来使处理过程更加合理,也可以使函数复用性更强,不过在写sql函数的时候可能会发现,有些函数是在表值函数下写的有些是在标量值下写的,区别是表值函数只能返回一个表,标量值函数可以返回基类型.举个例子,当用户删除一个节点的时候,是需要将当前节点下的所有子节点都删掉,如果程序只传一个当前节点,那就需要写一个函数来得到当前节点下的所有子节点,这些子节点的信息就可以放到一个表中返回. ALTER FUNCTION testGetSubNo…