欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

字母转为大写字母

程序员文章站 2022-05-13 21:16:35
自定义Scalar-valued Function函数,把字母转换为大写字母。 字母转为大写字母a-->A;b-->B;c-->C;...z-->Z如果非字母转换为'' SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- -- Author: In ......

 自定义scalar-valued function函数,把字母转换为大写字母。

字母转为大写字母a-->a;b-->b;c-->c;...z-->z
如果非字母转换为''

 

 

set ansi_nulls on
go
set quoted_identifier on
go

-- =============================================
-- author:      insus.net
-- blog:        https://insus.cnblogs.com
-- create date: 2019-05-31
-- update date: 2019-05-31
-- description: 字母转为大写字母a-->a;b-->b;c-->c;...z-->z
--              如果非字母转换为''
-- =============================================
create function [dbo].[svf_convertlettertouppercaseletter] 
(
  @letter char(1)
) returns char(1)
as
begin
    declare @uppercaseletter char(1) = ''          
    if len(isnull(@letter,'')) > 0 
    begin
        if ascii(@letter) % 97 + 1 <= 26
            set @uppercaseletter = char(ascii(@letter) - (97 - 65)) 

        if ascii(@letter) % 65 + 1 <= 26
            set @uppercaseletter = @letter
    end      
    return @uppercaseletter
end
go

 

例子演示:

 

select
[dbo].[svf_convertlettertouppercaseletter] ('a') as 'a',
[dbo].[svf_convertlettertouppercaseletter] ('a') as 'a',
[dbo].[svf_convertlettertouppercaseletter] ('b') as 'b',
[dbo].[svf_convertlettertouppercaseletter] ('b') as 'b',
[dbo].[svf_convertlettertouppercaseletter] ('c') as 'c',
[dbo].[svf_convertlettertouppercaseletter] ('c') as 'c',
[dbo].[svf_convertlettertouppercaseletter] ('z') as 'z',
[dbo].[svf_convertlettertouppercaseletter] ('z') as 'z',
[dbo].[svf_convertlettertouppercaseletter] ('$') as '$'

 

以上函数,只能对单独字母进行转换,如果一次性转换一串字符呢,这个功能可以有,参考下面:

 

set ansi_nulls on
go
set quoted_identifier on
go
-- =============================================
-- author:      insus.net
-- blog:        https://insus.cnblogs.com
-- create date: 2019-05-31
-- update date: 2019-05-31
-- description: 小写字符转为大写字母
-- =============================================
create function [dbo].[svf_converttouppercase] 
(
    @letter nvarchar(max)
) 
returns nvarchar(max)
as
begin
    declare @uppercase nvarchar(max) = n'',@i int = 1    
    while @i <= len(@letter) 
        begin          
            declare @currentchar char(1) = substring(@letter, @i, 1)
            set @uppercase = @uppercase + 
            case when ascii(@currentchar) % 97 + 1 <= 26 
            then char(ascii(@currentchar) - (97 - 65)) 
            else
               @currentchar
            end 
   
            set @i = @i + 1 
        end
        
    return @uppercase
end
go

 

示例: