SQL Server 常用函数

SQL 数据库函数 
聚合函数 
分析函数 
位操作函数 
排名函数 
行集函数 
标量函数 
函数确定性 
函数排序规则 
限制 

标量函数类别 
函数类别    说明
配置函数    返回当前配置信息。
转换函数    支持数据类型强制转换和转换。
游标函数    返回游标信息。
日期和时间数据类型及函数    对日期和时间输入值执行运算,然后返回字符串、数字或日期和时间值。
图形函数    执行与图形节点和边缘 ID 的字符表示形式之间的转换操作。
JSON 函数    验证、查询或更改 JSON 数据。
逻辑函数    执行逻辑运算。
数学函数    基于作为函数的参数提供的输入值执行运算,然后返回数字值。
元数据函数    返回有关数据库和数据库对象的信息。
安全函数    返回有关用户和角色的信息。
字符串函数    对字符串(char 或 varchar)输入值执行运算,然后返回一个字符串或数字值 。
系统函数    执行运算后返回 SQL Server 实例中有关值、对象和设置的信息。
系统统计函数    返回系统的统计信息。
文本和图像函数    对文本或图像输入值或列执行运算,然后返回有关值的信息。

字符串函数 
ASCII,CHAR,CHARINDEX,CONCAT,CONCAT_WS,DIFFERENCE,FORMAT,LEFT,LEN,LOWER,LTRIM,NCHAR,PATINDEX,QUOTENAME,REPLACE,REPLICATE,REVERSE,RIGHT,RTRIM,SOUNDEX,SPACE,STR,STRING_AGG,STRING_ESCAPE,STRING_SPLIT,STUFF,SUBSTRING,TRANSLATE,TRIM,UNICODE,UPPER

CHARINDEX:在第二个字符表达式中搜索一个字符表达式,这将返回第一个表达式(如果发现存在)的开始位置。
CONCAT:此函数以端到端的方式返回从串联或联接的两个或更多字符串值生成的字符串。
LOWER:将大写字符数据转换为小写字符数据后返回字符表达式。
UPPER:返回小写字符数据转换为大写的字符表达式。

1、CONCAT,返回从串联或联接的两个或更多字符串值生成的字符串,字符串拼接

# 实例1
# 结果:Happy Birthday 6/6
SELECT CONCAT('Happy ', 'Birthday ', 6, '/', '6') AS Result;

# 实例2
CREATE TABLE temp (
    emp_name NVARCHAR(200) NOT NULL,
    emp_middlename NVARCHAR(200) NULL,
    emp_lastname NVARCHAR(200) NOT NULL
);

INSERT INTO temp VALUES ('Name', 'MiddleName', 'Lastname');

SELECT * FROM temp;

SELECT CONCAT(emp_name,emp_middlename,emp_lastname) AS Result FROM temp;

UPDATE temp set `emp_name` = CONCAT(`emp_name`,'_Hello');

2、首字母大写

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

create FUNCTION [dbo].[CAP_FIRST] ( @InputString varchar(4000) ) 
 RETURNS VARCHAR(4000) AS BEGIN

 DECLARE @Index          INT DECLARE @Char           CHAR(1) DECLARE
 @PrevChar       CHAR(1) DECLARE @OutputString   VARCHAR(255)

 SET @OutputString = LOWER(@InputString) SET @Index = 1

 WHILE @Index <= LEN(@InputString) BEGIN
     SET @Char     = SUBSTRING(@InputString, @Index, 1)
     SET @PrevChar = CASE WHEN @Index = 1 THEN ' '
                          ELSE SUBSTRING(@InputString, @Index - 1, 1)
                     END

     IF @PrevChar IN (' ', ';', ':', '!', '?', ',', '.', '_', '-', '/', '&', '''', '(')
     BEGIN
         IF @PrevChar != '''' OR UPPER(@Char) != 'S'
             SET @OutputString = STUFF(@OutputString, @Index, 1, UPPER(@Char))
     END

     SET @Index = @Index + 1 END

 RETURN @OutputString

 END
GO

*、CAP_FIRST调用

select dbo.CAP_FIRST('abcd_abcd')
select replace(dbo.CAP_FIRST('abcd_abcd'),'_','')

*、首字母大写

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

create function [dbo].[F_split](@s nvarchar(1000))
returns nvarchar(1000)
as
begin
declare @str nvarchar(1000),@split nvarchar(100)
select @s=@s+' ',@str=''
while charindex(' ',@s)>0
begin
set @split=left(@s,charindex(' ',@s))
set @str=@str+upper(left(@split,1))+right(@split,len(@split))
set @s=stuff(@s,1,charindex(char(32),@s),'')
end
return @str
end
GO

*、编码转换UrlEncode

SET ANSI_NULLS ON
GO
 
SET QUOTED_IDENTIFIER ON
GO
 
 
CREATE FUNCTION [dbo].[UrlEncode]
(
    @Param NVARCHAR(2000)
)
RETURNS VARCHAR(MAX)
AS
BEGIN
    DECLARE @HexStr VARCHAR(MAX)
    --Use system function to convert input string to hex string
    SET @HexStr = master.dbo.fn_varbintohexstr(CONVERT(VARBINARY(MAX), @Param))
    --Remove the starting '0x'
    SET @HexStr = RIGHT(@HexStr, LEN(@HexStr)-2)
    --Declare required variables
    DECLARE @I INT, @Len INT
    DECLARE @Output VARCHAR(MAX), @S CHAR(4), @C CHAR(1)
    DECLARE @LoByte TINYINT, @HiByte TINYINT
    --Get length
    SET @Len=LEN(@HexStr)/4
    --Start with first character
    SET @I=0
    --Prepare the output string
    SET @Output=''
    WHILE @I<@Len
        BEGIN
        SET @S=SUBSTRING(@HexStr, @I*4 + 1, 4)
        IF RIGHT(@S, 2)='00'
            BEGIN
            --Try to convert 2 hex digits to char
            SET @LoByte = ASCII(SUBSTRING(@S, 2, 1)) - 48
            IF @LoByte>10 SET @LoByte = @LoByte - 39 --0x61'a'-> 10
            SET @HiByte = ASCII(SUBSTRING(@S, 1, 1)) - 48
            IF @HiByte>10 SET @HiByte = @HiByte - 39
            SET @C=CHAR(@LoByte + @HiByte * 16)
            --If it's a reserved character, don't encode
            IF @C LIKE '[A-Za-z0-9()''*-._! ]'
                SET @Output = @Output + @C 
            ELSE
                SET @Output = @Output + '%' + LEFT(@S, 2)
            END
        ELSE
            SET @Output = @Output + '%u' + RIGHT(@S, 2) + LEFT(@S, 2)
        --Move to next hex 
        SET @I = @I + 1
        END
    
RETURN @Output
END
GO
 
--select dbo.FN_URLDecode('%E5%B9%BF%E4%B8%9C%E7%9C%81%E7%8F%A0%E6%B5%B7%E5%B8%82%E4%BF%A1%E6%81%AF%E5%B7%A5%E7%A8%8B%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8')
GO

*
*
*
*
*
*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值