根据字符或数字选择子字符串



我用两种方式得到了一个列

  1. XXX ZZZ 1.1

  2. XXX
  3. 1.1

所以关键是我只要得到1.1,不管数据是从哪个方向来的(1或2)

我得到了SQL中的下一个函数来分割数据时,它发现一个空白,就像

FUNCTION `ddbb`.`function`(
`x` VARCHAR(255),
`delim` VARCHAR(12),
`pos` INT
) RETURNS varchar(255) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci
READS SQL DATA
BEGIN
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '');
END

我如何继续函数得到只是数字,无论它位于哪里?

我的另一个选择是保持功能不变,并在查询中获得正确的位置,但我也有问题。

解决方案类似于

SELECT SUBSTRING_INDEX("first_middle_last", '_', -1);

摘自https://stackoverflow.com/a/18422739/11298427

Mysql有SUBSTRING_INDEX,你可以使用

CREATE tABLe A (ab varchar(20))
INSERT INTO A VALUES
('XXX ZZZ 1.1'),
('XXX 1.1')
SELECT SUBSTRING_INDEX(ab,' ', -1) FROM A
| SUBSTRING_INDEX(ab,' ', -1) ||:-------------------------- || 1.1 || 1.1 |

db<此处小提琴>

最新更新