SQL根据指定分隔符分解字符串实现步骤

来源:asp之家 时间:2023-07-13 03:09:14 

如果有一个字符串 eg: "sun,star,moon,clouds",想要在MS SQL中根据给定的分隔符','把这个字符串分解成各个元素[sun] [star] [moon] [clouds],如何实现呢?为此,创建一个Function,代码如下:

代码如下:


CREATE FUNCTION [dbo].[Split_StrByDelimiter](@String VARCHAR(8000), @Delimiter CHAR(1))
RETURNS @temptable TABLE (items VARCHAR(8000))
AS
BEGIN
DECLARE @idx INT
DECLARE @slice VARCHAR(8000)
SELECT @idx = 1
IF len(@String)<1 OR @String IS NULL RETURN
while @idx!= 0
BEGIN
SET @idx = charindex(@Delimiter,@String)
IF @idx!=0
SET @slice = LEFT(@String,@idx - 1)
ELSE
SET @slice = @String
IF(len(@slice)>0)
INSERT INTO @temptable(Items) VALUES(@slice)
SET @String = RIGHT(@String,len(@String) - @idx)
IF len(@String) = 0 break
END
RETURN
END


示例:如果输入
SELECT * FROM dbo.Split_StrByDelimiter('sun,star,moon,clouds',',')
结果返回
sun
star
moon
clouds
在上面的代码做变形,返回有多少个元素

代码如下:


CREATE FUNCTION [dbo].[GetCount_Split_StrByDelimiter](@String VARCHAR(8000), @Delimiter CHAR(1))
RETURNS INT
AS
BEGIN
DECLARE @temptable TABLE (items VARCHAR(8000))
DECLARE @SplitCount INT
DECLARE @idx INT
DECLARE @slice VARCHAR(8000)
SELECT @idx = 1
IF len(@String)<1 OR @String IS NULL RETURN 0
while @idx!= 0
BEGIN
SET @idx = charindex(@Delimiter,@String)
IF @idx!=0
SET @slice = LEFT(@String,@idx - 1)
ELSE
SET @slice = @String
IF(len(@slice)>0)
INSERT INTO @temptable(Items) VALUES(@slice)
SET @String = RIGHT(@String,len(@String) - @idx)
IF len(@String) = 0 break
END
SET @SplitCount=(SELECT COUNT(*) FROM @temptable)
RETURN @SplitCount
END


示例
SELECT dbo.GetCount_Split_StrByDelimiter('sun,star,moon,clouds',',')
结果返回
4

标签:SQL,分解字符串
0
投稿

猜你喜欢

  • Flask-SQLALchemy基本使用方法

    2023-07-01 23:19:16
  • 谈一谈bootstrap响应式布局

    2023-08-22 20:17:39
  • js中undefined该怎么判断浅析

    2024-04-19 09:53:28
  • C#实现的ACCESS数据库操作类完整实例

    2024-01-20 02:57:36
  • vue实现轮播图帧率播放

    2024-04-28 09:24:38
  • python实现网站用户名密码自动登录功能

    2021-07-05 09:48:13
  • js返回顶部代码

    2011-04-25 19:21:00
  • python os用法总结

    2021-03-16 19:30:16
  • OpenCV特征提取与检测之Shi-Tomasi角点检测器

    2023-12-17 09:41:35
  • Go语言实现定时器的方法

    2024-02-09 04:55:21
  • asp清空站点缓存

    2009-08-04 18:01:00
  • 服务器Centos部署MySql并连接Navicat过程详解

    2024-01-15 11:53:30
  • asp.net aspnetpager分页统计时与实际不符的解决办法

    2023-06-30 04:02:32
  • 个人经验总结:完全卸载MySQL数据库5.0

    2009-01-04 13:07:00
  • python实现的文件夹清理程序分享

    2021-07-20 07:58:57
  • PyTorch与PyTorch Geometric的安装过程

    2021-12-15 05:00:08
  • 教你如何用python开发一款数字推盘小游戏

    2021-11-03 23:22:14
  • python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)

    2022-07-07 17:14:01
  • python 实现视频 图像帧提取

    2023-12-30 19:29:40
  • Sqlserver 2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法

    2024-01-27 10:14:51
  • asp之家 网络编程 m.aspxhome.com