对于一个项目,我必须遍历字母表并针对数据库中的某些值运行每个字母的搜索。该函数将返回每个字母的匹配数。
我希望能够在 SQL 存储过程中执行此操作,但我不确定如何在 SP 中执行“FOR 字母 = A 到 Z”循环。有谁知道如何做到这一点?
对于一个项目,我必须遍历字母表并针对数据库中的某些值运行每个字母的搜索。该函数将返回每个字母的匹配数。
我希望能够在 SQL 存储过程中执行此操作,但我不确定如何在 SP 中执行“FOR 字母 = A 到 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(ascii 表示 A)和 90(Z)循环并使用char letter = (char)i
来获取字母。
如果您还需要非英语的,只需设置一个网络配置设置“ABC......Z”并循环遍历它。
使用从 65 (A) 到 90 (Z) 的循环,并使用T-SQL CHAR() 函数。
当然,我假设您使用的是 SQL Server 数据库。如果没有,请发布您正在使用的数据库。
您需要使用“分组依据”并且可能在查询中也包含“计数”。你可以在这里找到更多信息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