前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL函数 SUBSTRING

SQL函数 SUBSTRING

作者头像
用户7741497
发布2022-08-01 14:06:50
1.2K0
发布2022-08-01 14:06:50
举报
文章被收录于专栏:hml_知识记录

SQL函数 SUBSTRING

字符串函数,它从任何数据类型的数据(包括流数据)中返回一个子字符串。

大纲

代码语言:javascript
复制
SUBSTRING(string-expression,start[,length])

SUBSTRING(string-expression FROM start [FOR length])

{fn SUBSTRING(string-expression,start[,length])}

参数

  • string-expression - 要从中派生子字符串的字符串表达式。表达式,可以是列名、字符串文字或另一个标量函数的结果。字段可以是任何数据类型:字符串(例如 CHARVARCHAR)、数字或数据类型为 %Stream.GlobalCharacter%Stream.GlobalBinary 的数据流字段。
  • start - 一个整数,它指定 string-expression 中开始子字符串的位置。 string-expression 中的第一个字符位于位置 1。如果起始位置高于字符串的长度,则 SUBSTRING 返回一个空字符串 。如果起始位置小于 1(零或负数),则子字符串从位置 1 开始,但子字符串的长度会减少起始位置。
  • length - 可选 — 一个整数,指定要返回的子字符串的长度。如果未指定长度,则默认返回字符串的其余部分。

描述

SUBSTRING 接受任何数据类型的数据并将该数据的子字符串作为数据类型 %String 返回。当然,子字符串可以是作为字符串返回的完整数据值。

start 的值控制子字符串的起点:

  • 如果 start1,则子字符串从 string-expression 的开头开始。
  • 如果 start 大于 1,则子字符串从 string-expression 开头计数的那个字符位置开始。
  • 如果 start 小于 1,则子字符串从 string-expression 的开头开始,但 length 的值会减少相应的量。因此,如果 start0,则 length 的值减 1;如果 start–1,则 length 的值减 2

length 的值控制子字符串的大小:

  • 如果 length 为正值(1 或更大),则子字符串在起始位置右侧结束 length 个字符。 (如果起始编号小于 1,此有效长度可能会减少。)
  • 如果长度大于字符串中剩余的字符数,则返回从起始位置右侧到字符串表达式结尾的所有字符。
  • 如果长度为零,则返回 NULL
  • 如果长度是负数, 会发出 SQLCODE –140 错误。

SUBSTRING 可用作 ODBC 标量函数(使用大括号语法)或 SQL 通用函数。

返回值

如果 string-expression 是任何 %String 数据类型,则 SUBSTRING 返回值是与 string-expression 数据类型相同的数据类型。这允许 SUBSTRING 使用特殊编码处理用户定义的字符串数据类型。

如果 string-expression 不是 %String 数据类型(例如,%Stream.GlobalCharacter),则 SUBSTRING 返回值为 %String

如果任何 SUBSTRING 参数值为 NULL,则 SUBSTRING 返回 NULL

流数据

与大多数 SQL 字符串函数不同,SUBSTRING 可以与流数据一起使用。字符串表达式可以是数据类型为 %Stream.GlobalCharacter%Stream.GlobalBinary 的字段。 SUBSTRING 将提取的流数据子集作为 %String 数据类型返回。如果 start=1 并且省略了 length,则 SUBSTRING%String 形式返回完整的流数据值。

因此,SUBSTRING 可用于将字符流数据作为字符串提供给其他 SQL 字符串函数。以下示例使用 SUBSTRING 允许 CHARINDEX 在包含 DNA 核苷酸序列的 %Stream.GlobalCharacter 字段的前 1000 个字符中搜索子字符串 TTAGGG 的第一次出现,并将该位置作为整数返回:

代码语言:javascript
复制
SELECT CHARINDEX('TTAGGG',SUBSTRING(DNASeq,1,1000)) FROM Sample.DNASequences

SUBSTRING or SUBSTR

  • SUBSTRING 从从字符串表达式的开头算起的起始位置提取子字符串。 SUBSTR 可以从字符串的开头或结尾提取子字符串。
  • SUBSTRING 可以与流数据一起使用; SUBSTR 不能与流数据一起使用。

示例

此示例返回字符串“forward”

代码语言:javascript
复制
SELECT {fn SUBSTRING( 'forward pass',1,7 )} AS SubText

forward

此示例返回字符串“pass”

代码语言:javascript
复制
SELECT {fn SUBSTRING( 'forward pass',9,4 )} AS SubText

pass

以下示例返回每个名称的前四个字符:

代码语言:javascript
复制
SELECT Name,SUBSTRING(Name,1,4) AS FirstFour
FROM Sample.Person

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SQL函数 SUBSTRING
  • 大纲
  • 参数
  • 描述
  • 返回值
  • 流数据
  • SUBSTRING or SUBSTR
  • 示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档