【发布时间】:2016-05-23 15:53:23
【问题描述】:
我正在从数据库中提取数据进行分析,但遇到了问题。本质上,我有一列表示销售的进度计划。这些列的值可以是“Green”、“Red”或“?”,但它们后面都有一个唯一的描述,例如Green - Good to proceed、Green- Ready to move forward 或Red -Do not proceed 等。
我需要的唯一数据是相应的“红色”“绿色”或“?”值,我不需要它们后面的描述。目前我所做的只是使用 SUBSTRING 获取每行的第一个字母,所以我最终得到了诸如 R, G, R, ?, ? etc.. 之类的值然后在 excel 中我可以进行查找和替换以重命名它们,但这是一个额外的步骤我认为没有必要。如果我尝试取前 5 个字母,我最终会得到某些行的数据,例如 Red -, or Red-D,这是我无法使用的。
有没有办法可以更改查询中列的值?我已经尝试过类似
的东西SELECT CASE WHEN SUBSTRING(columnName, 1, 1) = 'G' THEN 'Green'
,CASE WHEN SUBSTRING(columnName, 1, 1) = 'R' THEN 'Red'
etc.....
我尝试根据子字符串值更改值, 但这不起作用。谁能为此提供替代解决方案?
【问题讨论】:
-
创建一个类似
progress_type(progress_type_id, color, shortcut description)的表,并且只在你的数据表中存储一个外键progress_type_id。 -
从颜色后面的注释上显示的差异来看,“描述”可能需要保留在原始表格中;但我同意移动进度“代码”。
标签: mysql sql substring vertica