为啥起始位置为零的子字符串不会在 SQL 中引发错误?

Posted

技术标签:

【中文标题】为啥起始位置为零的子字符串不会在 SQL 中引发错误?【英文标题】:Why does substring with starting position zero does not throw error in SQL?为什么起始位置为零的子字符串不会在 SQL 中引发错误? 【发布时间】:2020-12-21 08:24:04 【问题描述】:

我运行了查询: 从客户中选择 SUBSTRING(first_name,2,3);如果 'first_name' 是 David,它将返回 'avi'

同样,当我尝试: 从客户中选择 SUBSTRING(first_name,0,3); 它返回空值。参考下面的驱动链接。

https://drive.google.com/file/d/1Q-Azolo2I0pu5PfLo7tqu5d5OANuuTio/view?usp=sharing

【问题讨论】:

抱歉,没有人会点击链接的图片。请尝试用几句话解释您的问题 - 这样您有时甚至可以找到解决方案:) 【参考方案1】:

你需要写:

select substring(first_name,1,3) from customers;

这应该作为xampp中的函数将1作为起始字符而不是0。

【讨论】:

如果它不以零开头,那么为什么它不抛出错误,说明要从一而不是零使用的消息? 要提取子串的字符串中第一个字符的位置记为1。如果为0,则不会抛出数字,而是返回null。大概是这样函数在mysql中定义。 是的,如果 len 小于 1,结果将是空字符串。 dev.mysql.com/doc/refman/8.0/en/…

以上是关于为啥起始位置为零的子字符串不会在 SQL 中引发错误?的主要内容,如果未能解决你的问题,请参考以下文章

和为零的子矩阵

均值舍入为零的子数组的数量

MacOS:NSPredicate 查找“一对一”关系不为零的位置

substring函数在SQL中怎么使用

为啥 Pytorch Dropout 层会影响所有值,而不仅仅是设置为零的值?

MySQL关于日期为零值的处理