我正在使用DBI编写脚本来执行对Oracle数据库的选择查询。我已成功捕获数据,但我需要帮助才能更改输出。
以下是示例输出。
Type
2
6
我想显示2 => Good和6 => Bad
有人可以建议我使用Perl代码来映射输出吗?
答案 0 :(得分:6)
# Create a hash of the values you want to output
my %human_text = (2 => 'Good', 6 => 'Bad');
# and then access the hash values like this:
print $human_text{2}; #will output 'Good'
print $human_text{6}; #will output 'Bad'
答案 1 :(得分:5)
通常最简单的方法是直接更改SQL查询输出的值。使用Oracle,您可以使用DECODE。
SELECT DECODE(MY_TYPE, 2, 'TWO', 6, 'SIX', 'DEFAULT_VALUE') FROM MY_TABLE
标准的SQL方法是使用CASE条件表达式。它更冗长,但更强大,更便携。例如,它适用于Oracle,PostgreSQL和MS-SQL。
SELECT
CASE
WHEN MY_TYPE = 2 THEN 'TWO'
WHEN MY_TYPE = 6 THEN 'SIX'
ELSE 'DEFAULT_VALUE'
END CASE
FROM MY_TABLE
如果您仍想在Perl中执行此操作,则可以创建Hash。代码示例非常简单,并且在我提供的链接中有详细记录。
答案 2 :(得分:0)
在RDBMS中创建一个查找表,其中2表示Good,6表示Bad。如果您预期具有与查找不匹配的值,则创建一个INNER JOIN(或LEFT JOIN)与您的SQL语句(或创建一个返回JOINed表的VIEW)。尝试使用Perl或SQL SELECT语句来替换数据库设计可能是一个坏主意。
答案 3 :(得分:0)
$ inWords =(“”,“非常好”,“好”,“满意”,“足够”,“差”,“差”)[$ number];