写一个查询以在给出数字时打印一个字母

时间:2013-11-20 17:57:03

标签: sql plsql

当我将数字作为输入时,我正在尝试编写查询以打印该字母 1-一个 2-B 3-C 4- d 5-F 等等 使用SQL或PL / SQL查询。

这样做的一种方法是:

  

begin case when 1 then 'a' when 2 then 'b' when 3 then 'c' . . . when 26 then 'z' . . end;

但是有没有其他方式来编写它而不是这么长的查询。

2 个答案:

答案 0 :(得分:2)

假设这是Oracle(根据标记并提及DECODE构造),您正在寻找TRANSLATE函数。 它接受一个字符串来翻译一对fromto字符串,然后将字符串中的每个字符替换为from中显示的to中的相应字符。字符串:

SELECT TRANSLATE (<your input here>, '1234', 'abcd') FROM dual;

答案 1 :(得分:0)

很难看到你的意思,因为你没有包含任何SQL或指定了你正在使用哪种数据库。 还有,更高的数字怎么样?例如,如果Z是26,那你怎么知道它的B + F还是Z. 假设你从a限制到I或者用逗号分隔数字,那么你可以使用替换函数 REPLACE(str,num,CHR(64 + num))

的行 假设str为“1”,在此示例中为

那么它将被ascii代码64 + 1 = 65的字符替换,这是一个

请注意,语法,函数在数据库之间有所不同,但大多数都有字符串替换和ascii代码到char函数。你也可以 需要将值转换为某个db的

上的数字