Loading
0

SQL子串:提取一组字符的最佳方法

每个从事数据工作的人都有不同的检索数据的方法,这取决于他们想如何使用数据。SQL旨在为我们提供一种借助工具提取任何格式数据的方法,比如SQL子串函数。这个函数使我们能够从一个字符串中提取特定的字符。

在这篇关于SQL中子串函数的文章中,我们将学习以下内容:

  • SQL中的子串是什么?
  • SQL子串函数的使用语法
  • 需要记住的重要事项
  • 从特定点提取子线
  • 从终端提取子线
  • 无需指定长度就能提取子串
  • 从表的列中提取子字符串

什么是SQL中的子串?

SUBSTRING()是一个函数,它可以让我们提取字符串的子部分,这些子部分被称为子串。我们要提取的字符串可以在函数本身中指定,也可以是表列的一部分。使用这个函数,我们可以从一个字符串中提取任意数量的子串。为了了解这个函数,我们来看看它的使用语法。

使用SQL子串函数的语法

SUBSTRING(string, start, length)

  • string参数用于指定我们要提取字符的元素。
  • start参数用于定义字符串的起始位置。如果是正数,函数从字符串的开头开始,如果是负数,函数从字符串的结尾开始。

注意:一个n字符字符串的第一个字符的值为1,最后一个字符的值为n。从尾部开始,最后一个字符的值为-1,第一个字符的值为-n。

  • 可选的length参数用于指定我们要从字符串中提取的字符数。如果没有这个参数,将返回从起始位置开始的整个字符串。

例如,SUBSTRING('ABCDEF', 2, 3)返回'BCD'。

需要记住的重要事项

  • 如果length参数不是正数,函数返回错误。
  • 如果start参数中指定的起始位置是一个大于原始字符串长度的数字,函数将返回一个空格。
  • 长度参数的值可以大于原始字符串的长度。在这种情况下,整个字符串将从指定的起始位置返回。
  • 必须指定字符串和起始参数,如果不指定,函数将返回语法错误。

让我们把上面讨论的概念应用到字符串和表列上。

从特定点提取子线

SUBSTRING()函数可以与SELECT命令一起使用,以检索子串。从指定字符串的第三个字符中提取五个字符:

任何空白的地方也被归为字符。这将导致以下结果:

从终端提取子线

要从指定的字符串末尾的第七个位置提取四个字符,你需要输入以下内容:

我们可以看到,"o "是被检索的四字符字符串的起始字符。

以上查询的结果如下:

无需指定长度就能提取子串

要从指定字符串的第二个字符中提取整个字符串,你将输入以下代码:

这表明没有为length参数指定值,所以将返回从起始位置开始的整个字符串。

我们也可以用这个函数从表中的列中提取字符。让我们来看看是如何实现的。

从表的列中提取子字符串

从表的列中检索子串的语法如下:

SELECT SUBSTRING(column_name, start, length) FROM table_name WHERE [condition]

  • 子串是从column_name参数中指定的列的每一行中检索出来的。
  • 可以在WHERE子句中指定一些条件来过滤被检索的行。

注意:WHERE子句是可选的。让我们用下面的表作为一个例子:

为了从表中提取每个员工的 "Dept_ID "的最后三位数字,我们将使用以下查询。

这将导致以下结果:

另外,我们也可以使用下面的查询来检索上述结果。这里,我们把起始位置指定为从末尾开始的第三个位置。我们不需要指定长度,因为我们需要从指定的起始位置开始的所有字符。

这将导致以下结果(这表明结果和之前的查询结果是一样的。):

要提取工资大于30000的每个员工的ID和名字的第一个字母,使用以下代码:

这将导致:

上面查询的WHERE子句中指定的条件过滤了返回的行数。让我们看看当起始位置大于字符串的长度时会发生什么。为了从第三个字符中提取所有员工的ID,我们将输入以下内容:

这将导致以下结果:

所有的行都会返回一个空白,因为这些记录的长度都是两个字符。

有时,我们只需要从整个数据串中取出几个字符,SQL子串函数有助于实现这一目的。例如,当我们只需要知道某人名字的第一个字母,或者年份的最后两位数字就足够了,使用SQL子串函数就是完美的解决方案。

关于慧都大数据分析平台

慧都大数据分析平台「GetInsight®」升级发布,将基于企业管理驾驶舱产品质量分析及预测设备分析及预测等大数据模型的构建,助力企业由传统运营模式向数字化、智能化的新模式转型升级,抓住数据经济的发展势头,提供管理效能,精准布局未来。了解更多,请联系在线客服

慧都大数据专业团队为企业提供商业智能大数据平台搭建,免费业务咨询,定制开发等完整服务,快速、轻松、低成本将任何Hadoop集群从试用阶段转移到生产阶段。

欢迎拨打慧都热线023-68661681,我们有专业的大数据团队,为您提供免费大数据相关业务咨询!