首页 > 解决方案 > MySQL函数找到某个字符的出现并返回一个整数?

问题描述

我使用 MySQL,我一直在努力寻找一个从字符串中返回 int 的函数,我可以在其中更改所选字符的出现。

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;

在此处输入图像描述

上面的查询做了我想要的,但我只是在寻找上面描述中解释的函数。

标签: mysqlsqlstringintegerposition

解决方案


一个更简单的查询或多或少与您的查询相同:

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。

我不知道您的“返回一个 char 的 int”或“更改发生”是什么意思,而且您显示的数据似乎不太可能是您真正的问题。如果你展示你的真实数据,你会得到更好的答案。

小提琴


推荐阅读