我有一个mysql表,它有一个requestID列。 requestId的类型为String。我有三种类型的requestID。我们来说bed
,tv
和fridge
。
bed
类型的请求,requestID中不会附加任何内容。例如abc123
tv
和fridge
类型的请求,requestId分别附加tv
和fridge
。例如abc123.tv
或abc123.fridge
我需要创建一个新表格,其中包含所有列以及列requestType
,其中包含条目bed
,tv
或fridge
。
输入
| ID | RequestId |
| 1 | abc123 |
| 2 | abc123.tv |
| 3 | abc123.fridge |
输出
| ID | RequestId | RequestType |
| 1 | abc123 | bed |
| 2 | abc123.tv | tv |
| 3 | abc123.fridge | fridge |
答案 0 :(得分:1)
您可以使用SUBSTRING_INDEX
将requestType列作为字符串中.
之后的字符。然后使用CREATE TABLE AS..SELECT..
创建一个包含所有现有列和新计算列的新表。
create table newtable as
select e.*,
case when substring_index(requestID,'.',-1)=requestID then 'bed'
else substring_index(requestID,'.',-1) end as requestType
from existing_table e