如果有一个字符串 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

更多相关文章

  1. android 中使用TextView实现分段显示不同颜色的字符串
  2. exp: 修改Android中strings.xml文件, 动态改变数据
  3. Android(安卓)中数据库查询方法 query() 中的 select
  4. android中SqLite query中用selectionArgs处理字符传值
  5. 修改系统Android版本,版本号
  6. 获取Android系统信息
  7. android 解析xml字符串
  8. android 解析xml字符串
  9. android 根据TextView宽度 自动缩小字体大小 以适应其宽度

随机推荐

  1. Android的Camera架构介绍
  2. 大话Android的消息机制(Handler、Looper
  3. Android的常用基本控件ImageView、ListVi
  4. Android Activity全屏和设置背景色
  5. Android---网络编程之Retrofit2整体结构
  6. Android(安卓)Tween 动画 (渐变、缩放、
  7. 聚焦 Android 11: Android 开发者工具
  8. Android * HandleMessage的模型
  9. TextView常用属性介绍
  10. layout中设置图片自适应大小,并且设置最大