Amazon Redshift中是否有一种方法可以将varchar列(具有A,B,D,M等值)转换为整数(A表示1,B表示2,C表示3等)?我知道Teradata具有类似ASCII()的功能,但是在Redshift中不起作用。
注意:我的目标是将varchar列转换为查询中的数字,然后比较这两列以查看数字是否相同。
答案 0 :(得分:1)
SELECT
ascii(upper(t.letter)) - 64
FROM
table t
说明:
upper()
输入大写字母(以处理大写字母和非大写字母的不同ascii值)ascii()
将字母转换为ASCII code。大写字母从65开始。Redshift :
在Redshift(https://docs.aws.amazon.com/redshift/latest/dg/c_SQL_functions_leader_node_only.html)上,ascii()
函数被标记为不推荐使用
因此,一种可行的(更实用的)解决方案是获取固定的字母字符串并给出给定字母的索引:
SELECT
letter,
strpos('ABCDEFGHIJKLMNOPQRSTUVWXYZ', upper(t.letter))
FROM
table t