簡體   English   中英

SQL存儲過程中的AZ循環

[英]A-Z loop in SQL Stored Procedure

對於一個項目,我必須遍歷字母並針對數據庫中的某些值來搜索每個字母。 該函數將返回每個字母的匹配數。

我希望能夠在SQL存儲過程中執行此操作,但是我不確定如何在SP中執行“ FOR letter = A to Z”循環。 有誰知道該怎么做?

如果您只需要英文字符,則根據字母表而定,您可以從65(A為ascii)和90(Z)組成一個循環,並使用char letter = (char)i來獲取字母。

如果您還需要非英語語言的用戶,則只需將網絡配置設置為“ 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

SQLFiddle演示

使用從65(A)到90(Z)的循環,並使用T-SQL CHAR()函數

當然,我假設您正在使用SQL Server數據庫。 如果沒有,請發布您正在使用的數據庫。

您需要使用“分組依據”,並且可能在查詢中也包含“計數”。 您可以在此處找到更多信息http://msdn.microsoft.com/zh-cn/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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM