MySQL函数会发现某些字符的出现并返回整数?

时间:2020-11-12 22:18:52

标签: mysql sql string integer position

我使用MySQL,并且不断努力寻找从字符串中返回一个char型整数的函数,在这里我可以更改所选char型的出现。

INSTR()返回第一次出现的位置,但这就是我无法添加参数来更改出现的情况,例如substring_index。因为这是当前的操作方式,但是我认为我正在使其变得复杂。

SELECT DISTINCT
    producent,
    LEFT(RIGHT(producent,
            LENGTH(producent) - INSTR(producent, 'O') + 1),
        INSTR(producent, 'E') - INSTR(producent, 'O') + 1) AS O_tot_E
FROM
    bordspellen
WHERE
    INSTR(producent, 'E') > INSTR(producent, 'O')
        AND INSTR(producent, 'O')
        AND INSTR(producent, 'E')
ORDER BY producent;

enter image description here

上面的查询可以满足我的要求,但是我正在寻找上面描述中说明的功能。

2 个答案:

答案 0 :(得分:0)

您可以使用regexp_substr()

select regexp_substr(col, 'o[^e]+e')

答案 1 :(得分:0)

一个更简单的查询,它几乎可以完成与您的查询相同的事情:

select
    producent,
    regexp_substr(producent,'O[^E]*E')
from bordspellen

尽管它在O之后找到E,并且不拒绝在O之前也有E的行。您可能希望使用'O[^OE]*E'和/或+而不是*。 regexp_substr需要mysql 8.0或mariadb 10.0。

我不知道您的“返回一个字符的整数”或“更改发生”的含义,并且您显示的数据似乎不太可能是您的真正问题。如果显示真实数据,您将获得更好的答案。

fiddle