SQL SERVER常用方法
二月十六
数据库交流群:195233677
展开
-
SQLServer EOMONTH函数
函数在 SQL Server 2012 及以上版本中才被引入。在较早的版本中,可以使用一些函数和表达式来计算一个月的最后一天,例如。函数用于返回指定日期所在月份的最后一天的日期。在SQL Server中,是一个日期表达式,指定要计算的日期。是一个可选参数,用于指定要添加到。原创 2023-03-19 00:27:28 · 6776 阅读 · 1 评论 -
SQLServer iif函数
SQLServer2012新增了iif函数,该函数是一个逻辑函数,用于根据条件返回两个可能的值之一。是一个逻辑表达式,如果为真,则返回。原创 2023-03-19 00:17:39 · 4375 阅读 · 0 评论 -
SQLServer FORMAT函数
每种区域设置都定义了一组特定的规则和格式,用于格式化日期、时间、货币、数字和其他数据类型。参数是要格式化的数据,可以是任何有效的SQL Server数据类型,如数字、日期和时间等。函数用于将数值、日期和时间等数据类型格式化为指定的格式,并返回一个格式化后的字符串。需要注意的是,不同的区域设置可能具有不同的约定和惯例,因此使用。函数的使用需要一定的计算资源,因此在处理大量数据时,应该谨慎使用。参数是一个可选参数,如果未指定,则使用当前会话的区域设置。参数是一个可选参数,用于指定用于格式化数据的区域设置。原创 2023-03-18 23:40:01 · 7690 阅读 · 0 评论 -
SQLServer CONCAT函数
在SQL Server中,CONCAT函数用于将两个或多个字符串连接在一起,返回一个新的字符串。可以将任意数量的字符串连接在一起,并且可以包含任何类型的字符串,包括常量、变量、列名和其他函数的结果。函数连接字符串时,SQL Server会先将第一个字符串与第二个字符串连接起来,然后将结果与第三个字符串连接起来,以此类推,直到连接完所有字符串。运算符连接字符串时,如果有一个字符串为NULL,则整个表达式的结果也将为NULL。运算符连接字符串时,SQL Server会将字符串拼接为一个字符串,然后返回结果。原创 2023-03-18 23:24:32 · 5893 阅读 · 0 评论 -
SQLServer 把数据放到同一行,用字符分隔
【代码】SQLServer 把数据放到同一行,用字符分隔。原创 2023-03-17 22:21:25 · 1176 阅读 · 0 评论 -
SQLServer查询所有包含某文本的存储过程、视图和函数的SQL
有时候我们改某个字段,但是不知道该字段在哪个存储过程或者视图中使用,可以通过该语句查询这个字段在哪里应用过。原创 2023-03-17 21:55:13 · 1750 阅读 · 0 评论 -
SQLServer知道值,怎么查在哪个表的哪个字段
这个标题写的真是太直白了……原创 2023-03-16 22:33:20 · 3292 阅读 · 0 评论 -
SQLserver sp_rename的用法
SQLserver sp_rename的用法原创 2023-02-14 13:44:04 · 4090 阅读 · 0 评论 -
SQLSERVER 集合处理——UNION
SQLSERVER 合集UNION ALL和UNION原创 2022-03-19 22:15:42 · 13027 阅读 · 0 评论 -
SQLSERVER 集合处理——INTERSECT
SQLSERVER两表交集求法原创 2022-03-19 22:05:47 · 5870 阅读 · 0 评论 -
SQLSERVER 集合处理——EXCEPT
SQLSERVER两表之差原创 2022-03-19 21:51:51 · 4415 阅读 · 0 评论 -
自定义分隔函数
自定义分隔函数原创 2022-02-20 22:12:25 · 1454 阅读 · 0 评论 -
SQL Server分隔函数
有时候我们在SQL Server中需要对一些字符串进行分隔,比如a,b,c ,按照‘,’进行分割,可以使用下边这个函数方法,新建方法如下:CREATE FUNCTION dbo.f_splitstr(@SourceSql NVARCHAR(MAX),@StrSeprate VARCHAR(100)) RETURNS @temp TABLE(F1 ...原创 2020-03-15 21:45:10 · 2025 阅读 · 0 评论 -
SQLSERVER大小写转换方法
[code=sql]CREATE FUNCTION dbo.Test_2 (@S VARCHAR(100))RETURNS VARCHAR(100)ASBEGIN DECLARE @re NVARCHAR(20) IF ascii(@S) BETWEEN ascii('A') AND ascii('Z') BEGIN SET @re = LOWER(@...原创 2020-02-21 08:13:12 · 8239 阅读 · 0 评论 -
SQL SERVER 判断字母大小写
CREATE FUNCTION dbo.Test_1 (@S VARCHAR(100))RETURNS VARCHAR(100)ASBEGIN DECLARE @re NVARCHAR(20) IF ascii(@S) BETWEEN ascii('A') AND ascii('Z') BEGIN SET @re = '是大写'; END...原创 2020-02-21 08:10:03 · 3106 阅读 · 0 评论 -
SQL SERVER 行列转换(2)——PIVOT、UNPIVOT 转换
上篇博客介绍了静态方式的行列转换,这次介绍一下利用SQL SERVER 函数实现的行列转换,行转列测试数据同之前的一样:--测试数据 if not object_id(N'Tempdb..#T') is null drop table #T Go Create table #T([Name] nvarchar(22),[Subject] nvarchar(22...原创 2018-04-09 11:29:37 · 6805 阅读 · 0 评论 -
SQL SERVER ParseName分隔字符串
ParseName是一个分隔字符串的函数,根据“.”作为分隔符,快速获取分解后的部分,直接上例子:DECLARE @ip NVARCHAR(200) = '192.168.1.2';SELECT PARSENAME(@ip, 1) AS col1, PARSENAME(@ip, 2) AS col2, PARSENAME(@ip, 3) AS col3...原创 2018-08-26 21:22:42 · 13482 阅读 · 2 评论 -
SQL SERVER Json 解析方法
整理记录一个Json解析的函数方法,方法如下: Create FUNCTION [dbo].[parseJSON]( @JSON NVARCHAR(MAX)) RETURNS @hierarchy TABLE ( element_id INT IDENTITY(1, 1) NOT NULL, /* internal surrogate primary key ...原创 2018-09-25 10:45:02 · 14916 阅读 · 3 评论 -
SQL SERVER 截取多个分隔符中指定第几个分隔符的前边的内容
又是一个难懂的标题,上例子吧,比如一个字符串,‘abc,1344,343,13as,33,343’,这个字符串都是用','分隔的,现在想截取第四个逗号前边所有的内容,方法如下:CREATE FUNCTION [dbo].[Get_StrArrayStrOfIndex]( @str VARCHAR(1024), --要分割的字符串 @split VARCHAR(...原创 2018-12-07 14:55:37 · 9770 阅读 · 0 评论 -
SQL SERVER跨表计算列
我们的表字段有时候要用到计算列,有时候计算列需要跨表计算,但是直接加入查询语句报错,我们可以使用函数来实现跨表计算列功能。 测试数据:--测试数据if not object_id(N'user') is null drop table [user]GoCreate table [user]([uid] int)Insert [user]select ...原创 2018-12-17 09:17:06 · 3189 阅读 · 0 评论 -
SQL SERVER字符串拆成一列函数:
论坛问题:https://bbs.csdn.net/topics/392551043 新建方法:CREATE FUNCTION [dbo].Fn_GetStrTab (@str VARCHAR(100))RETURNS @t TABLE (col NVARCHAR(200))ASBEGIN DECLARE @strlen INT; SELE...原创 2019-03-06 13:24:42 · 2358 阅读 · 0 评论 -
SQL SERVER 统计(3)——ROLLUP统计
上两篇博客介绍了CUBE的用法,今天介绍一下ROLLUP的用法,测试数据:--测试数据if not object_id(N'Tempdb..#T') is null drop table #TGoCreate table #T([Item] nvarchar(22),[Color] nvarchar(22),[Quantity] int)Insert #Tselec...原创 2018-08-12 21:45:49 · 4679 阅读 · 0 评论 -
SQL SERVER Reverse函数使用技巧
Reverse函数,是SQL SERVER是一个函数,主要是用来实现字符串倒置的一个功能,可以把字符串里各个字符的顺序倒过来,看下这个例子:DECLARE @str NVARCHAR(1000)SET @str='ABCD'SELECT @str 结果是: 我们应用Reverse之后的效果:DECLARE @str NVARCHAR(1000)SET @...原创 2018-07-06 15:53:09 · 13259 阅读 · 0 评论 -
SQL SERVER查询区分大小写
一般SQL Server数据库在查询数据的时候,都是默认不区分大小写的,但是如果我们有特殊需要,要对数据查询的时候区分大小写,我们可以使用COLLATE 来实现这个需求,测试数据:--测试数据if not object_id(N'Tempdb..#T1') is null drop table #T1GoCreate table #T1(name VARCHAR(50))I...原创 2018-05-02 20:57:39 · 12809 阅读 · 0 评论 -
SQL SERVER 字符串自增列
有时候我们对自增的主键有特殊的要求,不仅仅是数值型自增长,可能还要类似特殊字符+时间+自增长数值这样的效果,这样的需求,可以在新建表的时候,对自增主键进行设置,实现方法如下:CREATE TABLE testtab( ID INT IDENTITY, PRIMARYKEY AS 'T' + CONVERT(VARCHAR(100), GETDATE(), 112) ...原创 2018-05-01 15:14:44 · 12301 阅读 · 2 评论 -
SQL SERVER 多字段不为空COALESCE用法
有时候我们需要对多个字段进行非空判断,显示几个字段中不为空(最前边)的那个,字段少的时候,我们可以使用CASE WHEN做判断,但是多的时候写起来就比较麻烦了,这时候我们可以用COALESCE,测试数据:--测试数据 if not object_id(N'Tempdb..#T1') is null drop table #T1 Go Create table...原创 2018-04-13 09:21:28 · 15272 阅读 · 0 评论 -
SQL SERVER 行列转换(3)——动态转换
前边介绍了静态转换和PIVOT、UNPIVOT转换的方式,这次介绍一下动态拼接转换的形式,有时候我们的数据不是固定的,可能会有多条,所以需要我们动态进行拼接实现,行转列测试数据:--测试数据if not object_id(N'Tempdb..#T') is null drop table #TGoCreate table #T([Name] nvarchar(22),[S...原创 2018-04-09 13:34:22 · 16345 阅读 · 0 评论 -
SQL SERVER MERGE 有则更新无则插入
我们在处理数据的时候,往往会有“有则更新、无则插入”的需求,在SQL 2008 之前,通常是通过if 判断等,来做查询处理,SQL 2008 引入了MERGE ,可以更好的实现我们的需求,测试数据:--测试数据if not object_id(N'SourceTable') is null drop table SourceTableGoCREATE TABLE DB...原创 2018-04-09 10:07:06 · 10916 阅读 · 0 评论 -
SQL SERVER 判断文件是否存在
有时候我们需要判断一些物理文件是否存在,然后在做一些处理,比如作业定时导入txt文件,需要提前判断文件是否生成存在,然后再做导入操作,我们可以利用xp_fileexist来做判断,新建方法如下:CREATE FUNCTION fun_ExistFile ( @filePath VARCHAR(800) )RETURNS INTAS BEGIN DECLA...原创 2018-03-22 09:10:51 · 8326 阅读 · 0 评论 -
SQL SERVER 90度行列互换
我们有时候在处理数据显示的时候,需要把之前的数据进行90度的行列互转(注:不是行转列),数据处理起来比较麻烦,提供一个方法,测试数据:--测试数据if not object_id('tab') is null drop table tab Go Create table tab(a0 NVARCHAR(100),a1 int,a2 int,a3 int) In...原创 2018-04-08 15:53:17 · 5436 阅读 · 0 评论 -
SQL SERVER 利用触发器禁止删除数据并记录删除日志
有时候我们数据库表中的数据会莫名其妙的被删除,不知道是业务问题还是被黑了,所以我们想要在数据库操作层面对此进行制止,同时记录操作的日志,我们可以利用触发器来实现这个需求,测试数据:--测试数据if not object_id(N'T') is null drop table TGoCreate table T([ID] int,[姓名] nvarchar(22))I...原创 2018-04-08 10:26:46 · 19540 阅读 · 2 评论 -
SQL SERVER LEAD和LAG函数
SQL Server从2012开始,引入了LEAD和LAG函数,这两个函数可以把之前要关联查询的方法,改为可直接获取当前数据上下相邻多少行数据,描述的有点不清楚,上数据吧,测试数据:--测试数据if not object_id(N'Tempdb..#T') is null drop table #TGoCreate table #T([Id] int,[Value] int)...原创 2018-05-10 09:42:35 · 20507 阅读 · 0 评论 -
SQL SERVER去掉内容里边的Html标签
分享一个方法,去掉内容里的Html标签,测试数据:DECLARE @str NVARCHAR(max)='<!DOCTYPE html><html><head></head><body> <div>哈哈哈</div></body></ht原创 2018-05-11 09:13:31 · 6493 阅读 · 0 评论 -
SQL SERVER 读取数据库中所有表名
分享一个小技巧,我们有时候在操作数据库时,不管是统计还是做动态语句拼接操作,需要读取所有数据表的名字,我们可以使用下边的语句来读取所有表名:SELECT nameFROM sysobjectsWHERE xtype = 'u'; 结果: 除了上边的语句,我们还可以使用sp_MSforeachtable来实现,读取语句如下:EXEC sp_MSforeacht...原创 2018-05-04 17:54:38 · 7186 阅读 · 0 评论 -
SQL SERVER分隔函数,根据传入值,获取第几个分隔的值
这个题目描述的有点乱,大家看需求吧,论坛帖子的需求, 实现类似程序中,可以用string[] arr=“1.12.123”.split(.) 如果我要取12 则可以arr[1]。CREATE FUNCTION dbo.F_SplitByIdex ( @SplitString nvarchar(max), --源字符串 @Separator nvarchar(1...原创 2018-06-09 14:29:53 · 5629 阅读 · 0 评论 -
SQL SERVER 分页(2)——利用OFFSET/FETCH NEXT实现分页
在上一篇博客中用ROW_NUMBER实现分页,这次我们利用OFFSET/FETCH NEXT来实现分页,这个是在SQL2012中加入的分页方法,测试数据:--测试数据 if not object_id(N'T') is null drop table T Go Create table T([ID] int,[姓名] nvarchar(22))...原创 2018-06-14 19:51:54 · 10184 阅读 · 0 评论 -
SQL SERVER 分页(1)——利用ROW_NUMBER实现分页
我们在开发过程中,分页是十分常见的功能,在SQL SERVER 2012之前一般使用ROW_NUMBER来实现分页的功能,测试数据如下:--测试数据 if not object_id(N'T') is null drop table T Go Create table T([ID] int,[姓名] nvarchar(22)) Insert T sel...原创 2018-06-11 14:33:33 · 6299 阅读 · 0 评论 -
SQL SERVER 提取字符串中汉字
对一个字符串进行提取,获取其中汉字部分,方法如下:IF OBJECT_ID('DBO.GET_ZNSTR') IS NOT NULLDROP FUNCTION DBO.GET_ZNSTRGOCREATE FUNCTION DBO.GET_ZNSTR(@S NVARCHAR(100))RETURNS VARCHAR(100)ASBEGINWHILE PATINDEX('...原创 2018-05-22 08:28:01 · 11624 阅读 · 0 评论 -
SQL SERVER获取字符串中小写字母
有时候我们会截取字符串中的一些特殊想要的东西,大小写字母、模号、汉字、数字等等,今天先介绍一个获取字符串中小写字母(也是大写字母)的方式,直接上写法:DECLARE @s VARCHAR(MAX)= 'AbcdEf奥奥' --待截取字符串DECLARE @temp VARCHAR(MAX)='' --临时变量SELECT @temp=@temp+SUBSTRING(c...原创 2018-05-15 08:44:16 · 5566 阅读 · 0 评论 -
SQL SERVER 提取字符串中字母
对一个字符串进行提取,获取其中字母部分,方法如下:IF OBJECT_ID('DBO.GET_ENSTR') IS NOT NULL DROP FUNCTION dbo.GET_ENSTR;GOCREATE FUNCTION dbo.GET_ENSTR (@S VARCHAR(100))RETURNS VARCHAR(100)ASBEGIN WHILE PA...原创 2018-05-21 08:30:39 · 6869 阅读 · 0 评论