2011-10-17 36 views
5

Có kỹ thuật tích hợp sẵn hay không, để xác định xem ký tự "IsAlpha"?Máy chủ SQL: IsCharAlpha


tôi thấy rất nhiều ý kiến ​​cho rằng xoay quanh

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

Ngoại trừ việc bỏ qua các ký tự chữ mà không phải là trong phạm vi nhất định A-Z.

+1

ký tự alpha gì nằm ngoài A-Z? Bạn có nghĩa là u với umlauts vv? Bạn có thể dễ dàng thêm bất kỳ ký tự bổ sung nào bạn muốn tính là alpha vào đối sánh mẫu. Việc sử dụng một phạm vi sẽ phụ thuộc vào đối chiếu, vì các collations khác nhau có các thứ tự sắp xếp khác nhau. Không có gì tích hợp, bạn sẽ phải tự định nghĩa ... –

+1

Bạn có nghĩa là các ký tự như "â" bị bỏ quên? –

Trả lời

4

Collation kiểm soát cách đánh dấu và dấu phụ, chẳng hạn như có hay không S bằng Š.

Lưu ý các kết quả cho 2 trận đấu sau ... các SELECT lợi nhuận đầu tiên, thứ hai chỉ trả về 1 trận đấu:

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

Khéo léo! Đã chấp nhận. –