中统计字符串长度的函数_SQL Server中的字符串分割函数
您是否知道从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中的字符串分割函数相关推荐
- C语言试题三十三之比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。
1. 题目 请编写函数function,它的功能是:比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串.若两个字符串长度相同,则返回第一个字符串. 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周 区_SQL Server中管理空间的基本单位
第3周 区_SQL Server中管理空间的基本单位 原文:第3周 区_SQL Server中管理空间的基本单位 哇哦,SQL Server性能调优培训已经进入第3周了!同时你已经对SQL Serve ...
- sql 如何设置行级锁_SQL Server中的行级安全性简介
sql 如何设置行级锁 In this article, I'm going to discuss Row-Level Security in SQL Server. RLS or Row-Level ...
- sql判断基数_SQL Server中的基数估计框架版本控制
sql判断基数 This is a small post about how you may control the cardinality estimator version and determi ...
- sql server 主键_SQL Server中人口过多的主键和CE模型的变化
sql server 主键 In this blog post, we are going to talk about another cardinality estimation model enh ...
- sql server序列_SQL Server中的Microsoft时间序列
sql server序列 The next topic in our Data Mining series is the popular algorithm, Time Series. Since b ...
- 朴素贝叶斯 半朴素贝叶斯_SQL Server中的朴素贝叶斯预测
朴素贝叶斯 半朴素贝叶斯 In this article, we will walk through Microsoft Naive Bayes algorithm in SQL Server. 在本 ...
- sql 实现决策树_SQL Server中的Microsoft决策树
sql 实现决策树 Decision trees, one of the very popular data mining algorithm which is the next topic in o ...
最新文章
- 统计学习方法:朴素贝叶斯
- P2924 [USACO08DEC]大栅栏Largest Fence
- 排序算法 C++代码实现
- Scala数值类型转换
- 关于jQuery中自定义函数的操作
- 如何退出_农民退出的宅基地如何利用?农村宅基地征收如何补偿?
- mysql---复杂的sql语句join的使用(left join,right join)
- React开发(151):外部引入记得导出
- rabbitmq技术的一些感悟(一)
- Linux安装CUDA的正确姿势
- linux文件系统选哪种,linux下几种文件系统的测试比较
- 查找交换机某端口连接的主机IP地址
- python查看服务器日志_python读取服务器日志的方法
- 工具-管理工具资源集合
- 爬虫日记-采集 快代理 免费 代理ip 并 清洗 ip 附源码gitee,可运行
- UOS系统如何给软件签名
- NVIDIA显卡深度学习算力表
- 阿里聚石塔服务张北迁移问题
- 翻遍互联网都找不到的解决方案,一行代码轻松实现 Gitbook 默认折叠左侧菜单效果
- HDU n^n求最高位
热门文章
- 什么是互联网大厂_2020阿里、腾讯、字节跳动等14家互联网大厂薪资水平大汇总...
- 【自适应(盲)均衡6】信号过多径衰落信道的矩阵乘法表示之Toeplitz矩阵和Toeplitz块矩阵的生成(分数间隔FSE)
- python声明编码格式_使用python将doc文件转为utf8编码格式的txt
- Python中xlrd模块解析
- Spring Security原理与应用
- 怎么样开会才有效果?
- 深入理解Python中的元类(metaclass)
- 如何设置浏览器禁止使用UC浏览器
- C#值类型以及默认值记录下
- 《那些年啊,那些事——一个程序员的奋斗史》——88