您是否知道从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已经提供了一个,我强烈建议您看看它。

中统计字符串长度的函数_SQL Server中的字符串分割函数相关推荐

  1. C语言试题三十三之比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。

    1. 题目 请编写函数function,它的功能是:比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串.若两个字符串长度相同,则返回第一个字符串. 2 .温馨提示 ...

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

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

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

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

  4. sql 如何设置行级锁_SQL Server中的行级安全性简介

    sql 如何设置行级锁 In this article, I'm going to discuss Row-Level Security in SQL Server. RLS or Row-Level ...

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

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

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

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

  7. sql server序列_SQL Server中的Microsoft时间序列

    sql server序列 The next topic in our Data Mining series is the popular algorithm, Time Series. Since b ...

  8. 朴素贝叶斯 半朴素贝叶斯_SQL Server中的朴素贝叶斯预测

    朴素贝叶斯 半朴素贝叶斯 In this article, we will walk through Microsoft Naive Bayes algorithm in SQL Server. 在本 ...

  9. sql 实现决策树_SQL Server中的Microsoft决策树

    sql 实现决策树 Decision trees, one of the very popular data mining algorithm which is the next topic in o ...

最新文章

  1. 统计学习方法:朴素贝叶斯
  2. P2924 [USACO08DEC]大栅栏Largest Fence
  3. 排序算法 C++代码实现
  4. Scala数值类型转换
  5. 关于jQuery中自定义函数的操作
  6. 如何退出_农民退出的宅基地如何利用?农村宅基地征收如何补偿?
  7. mysql---复杂的sql语句join的使用(left join,right join)
  8. React开发(151):外部引入记得导出
  9. rabbitmq技术的一些感悟(一)
  10. Linux安装CUDA的正确姿势
  11. linux文件系统选哪种,linux下几种文件系统的测试比较
  12. 查找交换机某端口连接的主机IP地址
  13. python查看服务器日志_python读取服务器日志的方法
  14. 工具-管理工具资源集合
  15. 爬虫日记-采集 快代理 免费 代理ip 并 清洗 ip 附源码gitee,可运行
  16. UOS系统如何给软件签名
  17. NVIDIA显卡深度学习算力表
  18. 阿里聚石塔服务张北迁移问题
  19. 翻遍互联网都找不到的解决方案,一行代码轻松实现 Gitbook 默认折叠左侧菜单效果
  20. HDU n^n求最高位

热门文章

  1. 什么是互联网大厂_2020阿里、腾讯、字节跳动等14家互联网大厂薪资水平大汇总...
  2. 【自适应(盲)均衡6】信号过多径衰落信道的矩阵乘法表示之Toeplitz矩阵和Toeplitz块矩阵的生成(分数间隔FSE)
  3. python声明编码格式_使用python将doc文件转为utf8编码格式的txt
  4. Python中xlrd模块解析
  5. Spring Security原理与应用
  6. 怎么样开会才有效果?
  7. 深入理解Python中的元类(metaclass)
  8. 如何设置浏览器禁止使用UC浏览器
  9. C#值类型以及默认值记录下
  10. 《那些年啊,那些事——一个程序员的奋斗史》——88