你可以用
SUBSTRING_INDEX
提取每个值的第一个字。例如:
SELECT SUBSTRING_INDEX('Wellcare Value (HMO-POS)', ' ', 1) AS name
输出:
Wellcare
要将此添加到表中,您有几个选项。如果运行的是MySQL5.7.6或更高版本,则可以使用生成的列,如中所述。
this question
以及
manual
例如
ALTER TABLE mytable ADD COLUMN name VARCHAR(50) AS (SUBSTRING_INDEX(details, ' ', 1))
如果您想以牺牲获取时间来保存存储,请将列声明为
VIRTUAL
,否则声明为
STORED
.
您还可以创建
VIEW
其中包括将此表达式作为列。这类似于
事实上的
生成的列,但也适用于不支持生成列的MySQL版本:
CREATE VIEW mytable_view AS
SELECT *, SUBSTRING_INDEX(details, ' ', 1) AS name
FROM mytable
最后一个选项是创建一个实际的列,然后通过触发器更新它,但是前面的两个选项都是可取的。