2011-08-17 76 views
4

如何使用Sql查询检查字符串中的大写字母存在长度?如何检查字符串中的大写字母存在长度 - Sql查询

对于如:

1.KKart - 从这个字符串的结果应该是2,因为它有2个大写字母。 2.WPOaaa - 从这个字符串结果应该是3,因为它有3个大写字母。

在此先感谢

+0

正如我在请求中提到的那样,SQL QUERY? – user757207

+0

SQL SERVER 2008 R2 – user757207

+0

任何人都可以帮助我解决这个问题吗? – user757207

回答

4

没有内置的T-SQL功能。
您可以使用这样一个用户定义的函数:

CREATE FUNCTION CountUpperCase 
(
    @input nvarchar(50) 
) 
RETURNS int 
AS 
BEGIN 

    declare @len int 
    declare @i int 
    declare @count int 
    declare @ascii int 

    set @len = len(@input) 
    set @i = 1 
    set @count = 0 

    while @i <= @len 
    begin 

     set @ascii = ascii(substring(@input, @i, 1)) 

     if @ascii >= 65 and @ascii <= 90 
     begin 
      set @count = @count +1 
     end 

     set @i = @i + 1 

    end 

    return @count 

END 

使用(与你的问题的例子):

select dbo.CountUpperCase('KKart')回报2
select dbo.CountUpperCase('WPOaaa')返回3

+0

非常感谢:) – user757207

-1

怎么是这样的:

SELECT len(replace(my_string_field,'abcdefghijklmnopqrstuvwxyz','')) as 'UpperLen' 
FROM my_table 

原理是简单地通过什么来代替全部小写字符并计算剩余。

+3

您是否试图在问题的示例字符串上运行此操作?您的代码只会替换整个字符串'abcdefghijklmnopqrstuvwxyz',如果它发生的确如此。另外,字符串中可以有数字,而不是大写或小写字符。 –

相关问题