SQL - 在单个变量中管理字符与数值

时间:2015-11-03 19:27:40

标签: sql casting case netezza

下午好。也许是一个相对简单的SQL问题:

我有一个变量。它表示时间序列数据集中的月数。对于每个条目,当满足某些条件时,该计数将逐渐增加1。它可以有一个从0到任何东西的整数值,尽管它不会高于160左右。

但是,如果没有关于月数的数据,则变量的值为" X,"这就是问题所在。我试图用WHERE条件组合一个查询,该条件指定所述变量大于或等于2(或3或6 - 它是任意的)。正如您可能推测的那样,SQL无法解析" X"价值(对于所有意图和目的,我们可以定义为非常高的数字)。

然后,如何为分配" X"的变量创建一个比较条件?估算一个任意高的数字并保留所有其他情况的相应数值?我怀疑它涉及一个"案例"功能,但我到目前为止还没能成功地把任何东西放在一起。

if operator == '+':
    correct_answer = random_number1 + number2
elif operator == '-':
    correct_answer = random_number1 - number2
else:
    correct_answer = random_number1 * number2

感谢您抽出时间和考虑。

2 个答案:

答案 0 :(得分:1)

要为X赋予任意值,您确实会使用CASE表达式。这是一个赋予它10的值:

EXPLAIN DELETE
FROM mysitealias_comments 
WHERE comment_approved = 'spam';

答案 1 :(得分:0)

您可以尝试复合语句,如:

如果列是VARCHAR:

WHERE CAST(a.variable as INT) >= 2 AND a.variable <> 'X';

更大的问题是为什么你首先要混合价值观。为什么不将列专门设置为数字类型,并允许它为缺失值为NULL?