SQL存储过程中的A-Z循环
对于项目,我必须遍历字母表并针对数据库中的某些值运行每个字母的搜索。该函数将返回每个字母的匹配数量。SQL存储过程中的A-Z循环
我希望能够在SQL存储过程中做到这一点,但我不确定如何在SP中执行'FOR letter = A to Z'循环。有谁知道如何做到这一点?
使用从65(A)到90(Z)的循环,并使用T-SQL CHAR() function。
当然,我假设你正在使用SQL Server数据库。如果没有,请发布您正在使用的数据库。
完美,它做到了 - 我不知道这个函数在SQL中!非常感谢大家的帮助。 – Mark 2013-03-26 12:07:14
您需要使用“group by”,并可能在查询中包含“count”。你可以在这里找到更多的信息http://msdn.microsoft.com/en-us/library/ms177673.aspx
如果你只需要英文字母,你可以从65(ascii for A)和90(z)开始并使用char letter = (char)i
来得到这个字母。
如果您还需要非英语的话,只需设置一个网络配置设置“ABC ...... Z”并循环播放。
这工作 - 非常感谢您的帮助! – Mark 2013-03-26 12:09:26
;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 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
WITH alpha AS
(
SELECT 65 AS c
UNION ALL
SELECT c + 1 FROM alpha
WHERE c < 90
)
SELECT CHAR(c) FROM alpha
简单的方法,创建表 “字母表”,并以A到Z填充它? – 2013-03-26 11:48:53
感谢您的回复。在这种情况下,这不起作用,但不幸的是。 – Mark 2013-03-26 11:52:33
@Mark,为什么不呢?看起来像一个合理的解决方案,可能比循环更好。 – usr 2013-03-26 11:55:16