首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SELECT/LOCATE查询输出错误结果

问SELECT/LOCATE查询输出错误结果
EN

Stack Overflow用户
提问于 2019-01-10 05:57:20
回答 1查看 15关注 0票数 0

我有一个用冒号分隔的列(kills):0;2;0。我想选择中间的数字,然后想出这个查询:

代码语言:javascript
复制
SELECT RIGHT(kills, LOCATE(';', kills) - 1)-LEFT(kills, LOCATE(';', kills) - 1) FROM stats WHERE id='135' AND LOCATE(';', kills) > 0;

(我知道where子句是特定的,它是为了调试目的。它将实际设置为输出行id的变量)

当结果都具有相同的小数位(如1;2;3或10;20;30 )时,它可以很好地工作,但在小数位不同的情况下(如1;20;30或10;20;3 ),它将返回狂野结果。

1;20;21输出0。-- 10;20;2输出-10。

2;20;21输出-1。-- 20;20;2输出-20。

9;20;21输出-8。-- 90;20;2输出-90。

我希望选择所有这些值的中间值,即使其中一个值不具有相同的小数位。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-10 05:58:38

如果你想要中间的数字3,那么你想要第二个数字。使用substring_index()

代码语言:javascript
复制
select substring_index(substring_index(kills, ';', 2), ';', -1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54118966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档