我的数据库中有多行,其中的描述采用以下格式之一:
SC068 NGN 399ppc + 139ppm
SC068 NGN 139ppm
SC079 NGN 200ppc + 200ppm (After 60 Seconds)
SC060 NGN 200ppc
如何在ppc
和/或ppm
之前检索数字?
答案 0 :(得分:1)
假设每个只出现一次,你可以这样做:
select (case when col like '%ppm%'
then substring_index(substring_index(col, 'ppm', 1), ' ', -1) + 0
end) as ppm_num,
(case when col like '%ppc%'
then substring_index(substring_index(col, 'ppc', 1), ' ', -1) + 0
end) as ppc_num
这些只适用于字符串中的第一次出现。 + 0
将关键字前的字符静默转换为数字。
答案 1 :(得分:0)
基于Gordon的,您可以使用CASE WHEN
SELECT CASE WHEN INSTR(description,'ppm') <> 0
THEN SUBSTRING_INDEX(SUBSTRING_INDEX(description, 'ppm', 1), ' ', -1) + 0
WHEN INSTR(description,'ppc') <> 0
THEN SUBSTRING_INDEX(SUBSTRING_INDEX(description, 'ppc', 1), ' ', -1) + 0
ELSE ''
END instr_num
FROM t
示例数据
CREATE TABLE t
(description VARCHAR(100));
INSERT INTO t VALUES('SC068 NGN 399ppc + 139ppm');
INSERT INTO t VALUES('SC068 NGN 139ppm');
INSERT INTO t VALUES('SC079 NGN 200ppc + 200ppm (After 60 Seconds)');
INSERT INTO t VALUES('SC060 NGN 200ppc');
结果
instr_num
139
139
200
200