Oracle SQL中大小写条件的更好选择

时间:2018-10-18 07:48:26

标签: sql oracle

我有一个用例条件使查询很长的情况。

这种情况是我有QUESTION_NOQUESTION_1QUESTION_2QUESTION_3QUESTION_4之类的列,直到QUESTION_20

QUESTION_NO的值将介于1到20之间。 如果值为1,则必须检查QUESTION_1 != 'choose one'

如果QUESTION_NO的值= 2,则必须检查两个问题QUESTION_1 != 'choose one'QUESTION_2 != 'choose one'

因此,如果QUESTION_NO的值为20,那么我必须检查QUESTION_1QUESTION_20的所有列中的值!= 'choose one'

有没有更好的方法,例如在SQL中使用子字符串或其他方法。

1 个答案:

答案 0 :(得分:0)

如果所有其他问题都为空,则可以连接并比较:

where '|' || question_1 || '|' || question_2 || '|' . . . || '|' like '%|choose one|%'

我怀疑您的数据模型就是这种情况。正如Corion在评论中提到的那样,您应该修复数据模型,以便每个问题一行而不是一列。查询会简单得多。

如果其他列不为空,则可以使用正则表达式从串联字符串中提取前QUESTION_NO个值。