2

对于一个项目,我必须遍历字母表并针对数据库中的某些值运行每个字母的搜索。该函数将返回每个字母的匹配数。

我希望能够在 SQL 存储过程中执行此操作,但我不确定如何在 SP 中执行“FOR 字母 = A 到 Z”循环。有谁知道如何做到这一点?

4

6 回答 6

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 演示

于 2013-03-26T12:07:42.000 回答
2

如果您只需要英文字符,则取决于字母表,您可以从 65(ascii 表示 A)和 90(Z)循环并使用char letter = (char)i来获取字母。

如果您还需要非英语的,只需设置一个网络配置设置“ABC......Z”并循环遍历它。

于 2013-03-26T11:57:10.167 回答
1

使用从 65 (A) 到 90 (Z) 的循环,并使用T-SQL CHAR() 函数

当然,我假设您使用的是 SQL Server 数据库。如果没有,请发布您正在使用的数据库。

于 2013-03-26T11:56:50.113 回答
0

您需要使用“分组依据”并且可能在查询中也包含“计数”。你可以在这里找到更多信息http://msdn.microsoft.com/en-us/library/ms177673.aspx

于 2013-03-26T11:56:54.423 回答
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
于 2013-03-26T11:58:13.797 回答
-1
WITH alpha AS
(
    SELECT 65 AS c
    UNION ALL
    SELECT c + 1 FROM alpha
    WHERE c < 90
)
SELECT CHAR(c) FROM alpha
于 2014-05-30T07:21:00.107 回答