プロジェクトの場合、アルファベットをループして、データベース内のいくつかの値に対して各文字を検索する必要があります。この関数は、各文字の一致数を返します。
SQLストアドプロシージャでこれを実行できるようにしたいのですが、SPで「FOR文字=AからZ」ループを実行する方法がわかりません。誰かがこれがどのように行われるか知っていますか?
プロジェクトの場合、アルファベットをループして、データベース内のいくつかの値に対して各文字を検索する必要があります。この関数は、各文字の一致数を返します。
SQLストアドプロシージャでこれを実行できるようにしたいのですが、SPで「FOR文字=AからZ」ループを実行する方法がわかりません。誰かがこれがどのように行われるか知っていますか?
英語の文字だけが必要な場合は、アルファベットによって異なりますが、65(Aの場合はASCII)と90(Z)のループを実行してchar letter = (char)i
、文字を取得するために使用できます。
英語以外のものも必要な場合は、Web構成設定「ABC......Z」を設定してループします。
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
65(A)から90(Z)までのループを使用し、T-SQL CHAR()関数を使用します。
もちろん、SQLServerデータベースを使用していることを前提としています。そうでない場合は、使用しているDBを投稿してください。
「groupby」を使用する必要があり、クエリに「count」も含める必要があります。詳細については、http://msdn.microsoft.com/en-us/library/ms177673.aspxを参照してください。
;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
WITH alpha AS
(
SELECT 65 AS c
UNION ALL
SELECT c + 1 FROM alpha
WHERE c < 90
)
SELECT CHAR(c) FROM alpha