mysql - 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;
上面的查询做了我想要的,但我只是在寻找上面描述中解释的函数。
解决方案
一个更简单的查询或多或少与您的查询相同:
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”或“更改发生”是什么意思,而且您显示的数据似乎不太可能是您真正的问题。如果你展示你的真实数据,你会得到更好的答案。
推荐阅读
- php - 如何将循环数据库变量放入jquery函数中
- git - 如何在 git checkout 之前等待标签?
- sql - 可以选择组是否包含元素(postgresql)
- r - 如何仅选择R中一列中具有特定值的行?
- php - 如何在 PHP 中使用数组制作表格?
- tmux - 将 tmux 选择传递给 shell 命令?
- mysql - MySQL:如何将表 A 的数据复制到新的不存在的表 B?
- java - 我正在尝试构建一个跟踪方法,以 2dArray 的形式跟踪图片轮廓的坐标
- visual-studio-2017 - 在 TFS 构建过程之后,未创建发布文件夹
- reactjs - 使用带有 React 和 MobX 的 ES6 Map 不会在所有更改上重新渲染