SQL Server: IsCharAlpha - PullRequest
       9

SQL Server: IsCharAlpha

5 голосов
/ 18 октября 2011

Есть ли встроенная или обходная техника, чтобы определить, является ли символ " IsAlpha "?


Я вижу много предложений, которые вращаются вокруг

IF PATINDEX('[a-zA-Z]', @c) > 0
BEGIN
   --It is alpha
END

За исключением того, что пренебрегает буквенными символами, которые не находятся в заданном диапазоне A-Z.

1 Ответ

4 голосов
/ 18 октября 2011

Сортировка контролирует, как акценты и диакритические знаки оцениваются, например, равно или нет S равно Š.

Обратите внимание на результаты для следующего ... первый SELECT возвращает 2 совпадения,секунда возвращает только 1 совпадение:

DECLARE @testTable TABLE (testValue nvarchar(50))

insert into @testTable (testValue) values ('Š')
insert into @testTable (testValue) values ('S')
insert into @testTable (testValue) values ('4')

SELECT 'IsAlpha', testValue 
FROM @testTable 
WHERE PATINDEX('[a-zA-Z]', testValue COLLATE Latin1_General_CS_AS) > 0 

SELECT 'IsAlpha', testValue 
FROM @testTable 
WHERE PATINDEX('[a-zA-Z]', testValue COLLATE LATIN1_GENERAL_BIN) > 0 

Вы можете найти список параметров сортировки в SQL Server 2008 и краткое описание здесь.

...