Как проверить длину существования верхнего регистра в строке - Sql Query - PullRequest
4 голосов
/ 17 августа 2011

Как проверить длину существования верхнего регистра в строке, используя Sql Query?

Например:

1.KKart - из этой строки результат должен быть 2, потому что он имеет 2 заглавные буквы. 2.WPOaaa - из этой строки результат должен быть 3, потому что он имеет 3 заглавных буквы.

Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 17 августа 2011

Для этого нет встроенной функции 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 голосов
/ 17 августа 2011

Как насчет этого:

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

Принцип состоит в том, чтобы просто заменить все строчные буквы на ничто и считать оставшиеся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...