我使用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;
上面的查询可以满足我的要求,但是我正在寻找上面描述中说明的功能。
答案 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。
我不知道您的“返回一个字符的整数”或“更改发生”的含义,并且您显示的数据似乎不太可能是您的真正问题。如果显示真实数据,您将获得更好的答案。