不多说了,说明后面是完整的代码,用来将字符串型的字段的各行的值拼成一个大字符串,也就是通常所说的Concat 例如有如下表dict ID NAME CATEGORY 1 RED COLOR 2 BLUE COLOR 3 APPLE FRUIT 4 ORANGE FRUIT 执行SQL语句:select category,dbo.concatenate(name) as names from dict group by category. 得到结果表如下 category names COLOR REDBLUE FRUIT APPLEORANGE 如果觉得需要用逗号或分号或其他任何你想要的分...
要得到某一天是星期几,需要用到 SQL Server 中的日期函数:datename()。 今天是星期几,例子 1:set language N‘English‘ select datename(weekday, getdate())Wednesday今天是星期几,例子 2:set language N‘Simplified Chinese‘ select datename(weekday, getdate())星期三今天是星期几,例子 3:set datefirst 1 select datepart(weekday, getdate())3 -- 星期三注意:这里用到了另外一个 SQL Server 日期函数 da...
在数据库中有一个系统表sysobjects,里面存储了数据库各个对象的信息。可以查询下看看结果。可以看出每个对象都有一个ID,这个表存储了表,存储过程,触发器,视图等相关信息。注意:字段没有。 object_id就是根据对象名称返回该对象的id. object_name是根据对象id返回对象名称. select object_id(对象名)等同于: select id from sysobjects where name=对象名 select object_name(id号)等同于: select name from sysobj...
函 数 名 描 述 举 例 CHARINDEX 用来寻找一个指定的字符串在另一个字符串的起始位置 CHARINDEX ( expression1 ,expression2 [ , start_location ] ) 参数: expression1 包含要查找的序列的字符表达式。expression1 最大长度限制为 8000 个字符。expression2 要搜索的字符表达式。start_location 表示搜索起始位置的整数或 bigint 表达式。如果未指定 start_location,或者 start_location 为负数或 0,则...
1、获取当前时间 SELECT GETDATE() AS ‘当前日期‘ , DATENAME(year, GETDATE()) AS ‘年‘ , DATENAME(month, GETDATE()) AS ‘月‘ , DATENAME(day, GETDATE()) AS ‘日‘ , DATENAME(dw, GETDATE()) AS ‘星期‘ , DATENAME(week, GETDATE()) AS ‘周数‘ , DATENAME(hour, GETDATE()) AS ‘时‘ , DATENAME(minute, GETDATE()) AS ‘分‘ , DATENAME(secon...
OR REPLACE FUNCTION NEWID RETURN VARCHAR2 ISGUID VARCHAR2(32); BEGINGUID:=SYS_GUID();RETURN ‘{‘||SUBSTR(GUID,1,8)||‘-‘||SUBSTR(GUID,9,4)||‘-‘||SUBSTR(GUID,13,4)||‘-‘||SUBSTR(GUID,17,4)||‘-‘||SUBSTR(GUID,21,12)||‘}‘; END NEWID;然后就可以像在SqlServer中一样用了:SELECT NEWID() AS ID FROM DUAL --返回结果是类似这样的值:{1B869DEE-BF1A-0D8C-E050-BD0A9E806700} 在Oracle数据库中实现SqlServer数...
一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。CREATE function Get_StrArrayLength( @str varchar(1024), --要分割的字符串 @split varchar(10) --分隔符号)returns intasbegin declare @location int declare @start int declare @length int set @str=ltrim(rtrim(@str)) set @location=charindex(@split,@str) set @length=1 while...
说明:使用指定的替换值替换 NULL。 语法:ISNULL ( check_expression , replacement_value ) 参数: check_expression:将被检查是否为 NULL 的表达式。check_expression 可以为任何类型。 replacement_value:当 check_expression 为 NULL 时要返回的表达式。replacement_value 必须是可以隐式转换为 check_expresssion 类型的类型。 返回值:返回与 check_expression 相同的类型。 注释:如果 check_expression 不为 NULL,则返...
function [dbo].[Get_StrArrayStrOfIndex] (@str nvarchar(max), --要分割的字符串@split varchar(10), --分隔符号@index int --取第几个元素 ) returns varchar(1024) as begindeclare @location intdeclare @start intdeclare @next intdeclare @seed intset @str=ltrim(rtrim(@str))set @start=1set @next=1set @seed=len(@split)set @location=charindex(@split,@str)while @location<>0 and @index>@nextbeginset @start=@l...
Create function 函数名(参数) 2 Returns 返回值数据类型 3 [with {Encryption | Schemabinding }] 4 [as] 5 begin 6 SQL语句(return变量) 7 End 8 注:Schemabinding将函数绑定到它引用的对象上(注:函数一旦绑定,则不能删除、修改,除非删除绑定)View Code 表值函数-内嵌函数: 1 create function 函数名(参数) 2 returns table 3 [with {Encryption | Schemabinding }] 4 as 5 return(一条SQL语句)View Code 表值函数...
前面提到了记录合并,有了合并需求肯定也会有分离需求,说到字符串分离,大家肯定会想到SPLIT函数,这个在.NET,Java和JS中都有函数,很可惜在SQL SERVER中没有,我们只能自己来写这么一个函数。 首先来分析一下怎么写这个函数,以之前合并的字符串为例,“张三,李四,王五,钱六,赵七,Tom,Amy,Joe,Leo”,现在要将此字符串按照“,”进行分离得到一组数据,现在可以得出这个函数传入变量有两个,一个是目标字符串,我们定义为@string...
Description: 分割字符串函数 -- SELECT * FROM dbo.Split(‘a,b,c,d,e,f,g‘,‘,‘) -- =============================================CREATE FUNCTION [dbo].[Split] ( @Text VARCHAR(8000) , @Sign NVARCHAR(4000) )RETURNS @tempTable TABLE ( ID INT IDENTITY(1, 1) PRIMARY KEY , [TEMPVAL] VARCHAR(4000) ) AS BEGIN DECLARE @StartIndex INT --开始查找的位置DECLARE @FindIndex INT --找到的位置DECLARE @Content VARCHA...
与RANGE选项之间的区别。因此在今天的文章里我想给你展示下这些选项的区别,对于你的分析计算意味着什么。 ROWS与RANGE之间的区别 当你用OVER()子句进行你的分析计算来打开你的窗口,你也可以在窗口里看到的,通过ROWS与RANGE选项来限制你的行数。来看下面的T-SQL语句: 1 SELECT2 t.OrderYear,3 t.OrderMonth,4 t.TotalDue,5 SUM(t.TotalDue) OVER(ORDER BY t.OrderYear, t.OrderMonth ROWS BETWEEN UNBOUNDED P...
与RANGE选项之间的区别。因此在今天的文章里我想给你展示下这些选项的区别,对于你的分析计算意味着什么。 ROWS与RANGE之间的区别 当你用OVER()子句进行你的分析计算来打开你的窗口,你也可以在窗口里看到的,通过ROWS与RANGE选项来限制你的行数。来看下面的T-SQL语句: 1 SELECT2 t.OrderYear,3 t.OrderMonth,4 t.TotalDue,5 SUM(t.TotalDue) OVER(ORDER BY t.OrderYear, t.OrderMonth ROWS BETWEEN UNBOUNDED P...
--去零函数 ---去除小数点后多余的零 select dbo.ClearZero(‘1245.3400‘) ---结果为1245.34 create function [dbo].[ClearZero] (@Number varchar(200)) returns varchar(200) as beginif @Number = ‘‘ or @Number is null ---如果为空,直接返回return nullelsebegindeclare @PointIndex intset @PointIndex = charindex(‘.‘,@Number) if @PointIndex = 0 return @Number ---如果不是浮点数,直接返回if @...