2013-03-26 2 views
2

프로젝트의 경우 알파벳을 반복하고 데이터베이스의 일부 값에 대해 각 문자를 검색해야합니다. 이 함수는 각 문자에 대한 일치 수를 반환합니다.SQL 저장 프로 시저에서 A-Z 루프

SQL 저장 프로 시저에서이 작업을 수행 할 수 있기를 원하지만 SP에서 'FOR letter = A to Z'루프를 수행하는 방법이 확실하지 않습니다. 아무도 이것이 어떻게 할 수 있는지 알고 있습니까?

+4

쉬운 방법, 테이블 "알파벳"을 작성하고 A ~ Z까지 채 웁니다? –

+0

답장을 보내 주셔서 감사합니다. 불행히도이 경우에는 작동하지 않습니다. – Mark

+3

@ 마크, 왜 그럴까? 루프보다 성능이 좋은 합리적인 솔루션처럼 보입니다. – usr

답변

1

65 (A) ~ 90 (Z)의 루프를 사용하고 T-SQL CHAR() function을 사용하십시오.

물론 SQL Server 데이터베이스를 사용하고 있다고 가정합니다. 그렇지 않은 경우 사용중인 DB를 게시하십시오.

+0

완벽하다, 그랬다 - 나는 그 기능이 SQL에 있다는 것을 몰랐다! 많은 도움을 주신 모든 분들께 감사드립니다. – Mark

2

영문자 만 필요하면 영문자가 필요합니다. 65 (아스키는 A)와 90 (Z는)에서 루프를 수행하고 char letter = (char)i을 사용하여 문자를 얻을 수 있습니다.

영어 이외의 언어도 필요한 경우 웹 구성 설정 "ABC ...... Z"를 설정하고 반복하십시오.

+0

이것은 효과적이었습니다 - 도움에 대해 대단히 감사합니다! – Mark

0
;WITH Alphabet AS 
(
    SELECT CHAR(65) AS Letter, 65 AS Code 
    UNION ALL 
    SELECT CHAR(Code + 1), Code + 1 
    FROM Alphabet 
    WHERE Code < 90 
) 

SELECT Letter 
FROM Alphabet 
2
with ATable(c) as 
(
    select cast('A' as CHAR(1)) as c 
    union all 
    select CHAR(ASCII(c)+1) as C from ATable where C<'Z' 

) 
select * from ATable 

SQLFiddle demo

-1
WITH alpha AS 
(
    SELECT 65 AS c 
    UNION ALL 
    SELECT c + 1 FROM alpha 
    WHERE c < 90 
) 
SELECT CHAR(c) FROM alpha 
관련 문제