2011-10-17 5 views
5

Esiste una tecnica incorporata o soluzione alternativa per determinare se un carattere "IsAlpha"?SQL Server: IsCharAlpha


Vedo un sacco di suggerimenti che ruotano attorno

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

Solo che trascura caratteri alfabetici che non sono nella gamma data A-Z.

+1

caratteri alfabetici Quali sono al di fuori A-Z? Intendi con umlaut ecc.? È possibile aggiungere facilmente qualsiasi carattere aggiuntivo che si desidera contare come alpha alla corrispondenza del modello. L'utilizzo di un intervallo dipenderà dalle regole di confronto, poiché le varie regole di confronto hanno ordini di ordinamento diversi. Non c'è niente di built-in, dovrai definire il tuo ... –

+1

Vuoi dire che caratteri come "â" sono esclusi? –

risposta

4

La collazione controlla la valutazione di accenti e segni diacritici, ad esempio se S corrisponde a Š.

Nota i risultati per le seguenti ... i primi SELECT rendimenti 2 partite, il secondo restituisce solo 1 partita:

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 

You can find a list of collations within SQL Server 2008 and a brief descripition here.

+0

Ingannevole! Accettato. –