您是否知道从SQL Server 2016开始,系统就内置STRING_SPLIT函数,该函数用于将字符串分隔的变量拆分为一个可用列表。 对于经常需要分割字符串的技术人员,建议您查看此功能。 STRING_SPLIT是一个表值函数,它返回由定界符分隔的字符串值的单个列。 这是T-SQL的不寻常之处,其使用要求兼容级别为130或更高(Microsoft不想引起对现有用户代码的重大更改)。 使用此方法效率更高,并且可以在不调用标量函数的情况下执行。

SQL Server系统内置分割函数

语法

STRING_SPLIT(字符串、分隔符)

如何使用它呢?

SELECT value AS 'Flavor' FROM STRING_SPLIT('Chocolate,Vanilla,Strawberry', ',');  

返回结果

执行计划是这样子的,它非常直接和简单。

自定义函数

这是在某些环境中可以找到的本地版本,您可以看到它的效率低得多。

****** Object:  UserDefinedFunction [dbo].[fnSplit]    Script Date: 7/11/2020 10:26:45 AM ******/  SET ANSI_NULLS ON  GO  SET QUOTED_IDENTIFIER ON  GO  ALTER FUNCTION [dbo].[fnSplit](      @sInputList VARCHAR(8000) -- List of delimited items    , @sDelimiter VARCHAR(8000) = ',' -- delimiter that separates items  ) RETURNS @List TABLE (item VARCHAR(8000))  BEGIN  DECLARE @sItem VARCHAR(8000)  WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0   BEGIN   SELECT  @sItem=RTRIM(LTRIM(SUBSTRING(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1))),  @sInputList=RTRIM(LTRIM(SUBSTRING(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList))))   IF LEN(@sItem) > 0    INSERT INTO @List SELECT @sItem   END  IF LEN(@sInputList) > 0   INSERT INTO @List SELECT @sInputList -- Put the last item in  RETURN  END  

结果

结果是一样的。但是请注意,您的字段名每次都是相同的,有了这个新函数,您在这方面获得了更多的灵活性。

执行计划

它比我们上面看到的包含序列的直接表达式要复杂一些。

有许多不同的方法可以编写这样一个分割函数,但是既然SQL Server已经提供了一个,我强烈建议您看看它。

access 删除字符串中的字符_SQL Server中的字符串分割函数相关推荐

  1. amp sqlserver中 什么意思_sql server中创建表时各个数据类型时什么意思??

    (1)整数型 整数包括bigint.int.smallint和tinyint,从标识符的含义就可以看出,它们的表示数范围逐渐缩小. lbigint:大整数,数范围为-263(-922337203685 ...

  2. java练习: 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:

    import java.util.ArrayList; import java.util.Scanner;/*** 7. 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:* 原始字 ...

  3. 第3周 区_SQL Server中管理空间的基本单位

    第3周 区_SQL Server中管理空间的基本单位 原文:第3周 区_SQL Server中管理空间的基本单位 哇哦,SQL Server性能调优培训已经进入第3周了!同时你已经对SQL Serve ...

  4. sql判断基数_SQL Server中的基数估计框架版本控制

    sql判断基数 This is a small post about how you may control the cardinality estimator version and determi ...

  5. sql server 主键_SQL Server中人口过多的主键和CE模型的变化

    sql server 主键 In this blog post, we are going to talk about another cardinality estimation model enh ...

  6. sql server 密钥_SQL Server中的升序密钥和CE模型变化

    sql server 密钥 In this note, I'm going to discuss one of the most useful and helpful cardinality esti ...

  7. sql语句截断_SQL Server中SQL截断和SQL删除语句之间的区别

    sql语句截断 We get the requirement to remove the data from the relational SQL table. We can use both SQL ...

  8. 中统计字符串长度的函数_SQL Server中的字符串分割函数

    您是否知道从SQL Server 2016开始,系统就内置STRING_SPLIT函数,该函数用于将字符串分隔的变量拆分为一个可用列表. 对于经常需要分割字符串的技术人员,建议您查看此功能. STRI ...

  9. sql limit 子句_SQL Server中的FOR XML PATH子句

    sql limit 子句 As SQL professionals, we often have to deal with XML data in our databases. This articl ...

最新文章

  1. IsWow64的真实用途
  2. win7系统一直反复重启_iPhone7开机白苹果反复重启进不了系统维修过程
  3. 路径分析开源工程OpenTripPlaner 概述
  4. 简单python脚本实例-简单了解python调用其他脚本方法实例
  5. MFC中的问题记录 2012-2-20
  6. 安卓蓝牙键盘按键映射_安卓手游键盘映射工具(凤凰系统键盘映射) v2.0 最新版...
  7. Micrium代码规范——命名规则
  8. 8. 求 s=a+aa+aaa+aaaa+aa…a 的值
  9. 如何用java模拟饭店点菜,【模拟饭店2怎么玩】餐厅攻略大全
  10. IT行业什么岗位最吃香
  11. java编写时间流逝_如何测量Java中的时间流逝?
  12. OC-NSString
  13. word里面空白页怎么删除
  14. 【图像增强】Learning Enriched Features for Real Image Restoration and Enhancement 阅读笔记
  15. 折弯公差尺寸及工艺要求
  16. E-Training在线学习系统(汉堡王定制版)
  17. 【控制】自适应控制,模型参考自适应控制,公式推导,有程序有结果图
  18. 5G NR UE 状态转换
  19. replace()和replaceAll()的使用
  20. 传感器和算法如何让机器人实现避障?

热门文章

  1. Loadrunner脚本编程(4)-数据类型操作和字符串操作
  2. nagios安装文档
  3. 102.如何减轻缓存失效时上游服务的压力
  4. python 下载图片到内存卡_python-23:将图片下载到本地
  5. python抽取指定url页面的title_Python新手写爬虫全过程记录分析
  6. java反射 获取属性_Java反射学习-3 - 反射获取属性,方法,构造器
  7. CString、string、char*的综合比较
  8. Halcon 学习总结——仿射变换
  9. java实验的总结_Java实验总结——初学(上)
  10. ndnsim r语言 ubuntu_Python语言---数据库