我有字母 “A”, “B”, “C”。 我想我的结果是“B”,“C”,“d”,在TSQL分别。 请问我用它来实现这一目标?
Answer 1:
使用ASCII
得到字符的值,增加一个,并使用CHAR
的值转换回一个字符。
SELECT CHAR(ASCII('a') + 1)
Answer 2:
这是你如何做到这一点的第一个字母
DECLARE @myletter char(1) = 'a';
SELECT CHAR(ASCII(@myletter)+1);
Answer 3:
这里是乔纳森·伍德的实施CTE
;WITH cte AS
(SELECT CHAR(ASCII('a')) [char], 1 [count]
UNION ALL
SELECT CHAR(ASCII('a') + cte.count) [char], cte.count + 1 [count]
FROM cte)
SELECT TOP(26) cte.count[pos], cte.char
FROM cte
你可以使用它,就像是和结果插入到表变量或临时表,并用它上。
另一个技巧我也给的,在这个CTE的数据的数据库中的表,那么在未来更容易加入到它,使用它一样,不管出于什么目的或原因。
Answer 4:
3个字母有两个SQL程序alfabetic计数器
(A,B ... Z,AA,AB ... ZY,ZZ,AAA ... ZZZ):
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
alter procedure letraMas
@letraEntra as char( 1),
@letraSale as char( 1) OUTPUT,
@seLleva as bit OUTPUT
as
--set @letraEntra = 'w'
--set @letraSale = 'm'
set @seLleva = 0
select
@letraSale = CASE
WHEN @letraEntra = '' or (@letraEntra is null) or @letraEntra = 'z'
THEN 'a'
WHEN @letraEntra < 'z'
THEN CHAR (ASCII( @letraEntra) + 1)
end
if @letraEntra = 'z' set @seLleva = 1
return
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
/* USO:
declare
@tareaEntra as char(3),
@tareaSale as char(3)
set @tareaEntra = 'xzz'
EXEC tareaMas @tareaEntra, @tareaSale OUTPUT
*/
alter procedure tareaMas
@tareaEntra as char( 3),
@tareaSale as char( 3) OUTPUT
as
declare @charU as char(1 ) -- char de U_nidades albabéticas
declare @charD as char(1 ) -- char de D_ecenas albabéticas
declare @charC as char(1 ) -- char de C_entenas albabéticas
declare @letraSale as char(1 ) -- char de C_entenas albabéticas
declare @seLleva as bit
set @tareaEntra = right(' ' + rtrim (@tareaEntra), 3)
set @charU = substring(@tareaEntra , 3, 1)
set @charD = substring(@tareaEntra , 2, 1)
set @charC = substring(@tareaEntra , 1, 1)
EXEC letraMas @charU, @letraSale OUTPUT, @seLleva OUTPUT
set @charU = @letraSale
if @seLleva = 1
BEGIN
EXEC letraMas @charD, @letraSale OUTPUT, @seLleva OUTPUT
set @charD = @letraSale
if @seLleva = 1
BEGIN
EXEC letraMas @charC, @letraSale OUTPUT, @seLleva OUTPUT
set @charC = @letraSale
END
END
set @tareaSale = ltrim(@charC + @charD + @charU)
return
Answer 5:
DECLARE @Letters AS TABLE
(
Letter CHAR(1)
)
INSERT INTO @Letters
( Letter )
VALUES ( 'A' )
INSERT INTO @Letters
( Letter )
VALUES ( 'B' )
INSERT INTO @Letters
( Letter )
VALUES ( 'C' )
SELECT CHAR(ASCII(Letter) + 1) FROM @Letters
例如使用SQL表变量,但上述任何会为你做它。 取决于你的使用,以明显的整理信件列表什么方法。
文章来源: Given Letter, Get Next Letter in Alphabet