惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

I
InfoQ
G
Google Developers Blog
Engineering at Meta
Engineering at Meta
月光博客
月光博客
博客园 - 聂微东
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
A
About on SuperTechFans
Microsoft Azure Blog
Microsoft Azure Blog
Blog — PlanetScale
Blog — PlanetScale
U
Unit 42
T
Tailwind CSS Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
云风的 BLOG
云风的 BLOG
S
SegmentFault 最新的问题
F
Fortinet All Blogs
H
Help Net Security
J
Java Code Geeks
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 叶小钗
L
LangChain Blog
Martin Fowler
Martin Fowler
N
Netflix TechBlog - Medium

博客园 - 亦心

教你如何查找并下载某手某音上的外部视频 求出两个字符串中最大长度的相同的子字符串 年会抽奖软件 正则表达式+编码转换小工具 sql语句跨库导入导出 Google maps API开发(二) - 亦心 Google maps API开发(一) - 亦心 Javascript树型菜单(含源码) Javascript结合XML省市级联 - 亦心 - 博客园 ASP.NET程序读取二代身份证(附源码) - 亦心 - 博客园 仿百度搜索智能提示(纯JS实现) 发现一个免费申请国际域名的地方!! asp.net性能优化 分享一个分页存储过程和分页函数 利用反射实现通用的DataReader转List、DataReader转实体类 任意类型转换成json javascript正则表达式 - 亦心 - 博客园 access、excel取随机n条记录 测试SQL Server执行时间和CPU时间
tsql字符串操作
亦心 · 2009-12-03 · via 博客园 - 亦心

 把以前做项目时用到的字符串操作函数发出来:

/*-----------------------------------------------------------------------------------------

* Copyright(C) 2008  版权所有

* 功能描述:得到字符串长度

* 创建标识:亦心,2009年月日

* 修改标识:

-----------------------------------------------------------------------------------------*/

IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[dbo].Fun_GetStrArrayLength') AND type in (N'FN', N'PC'))

    DROP FUNCTION [dbo].Fun_GetStrArrayLength

GO

CREATE function Fun_GetStrArrayLength 

( 

@str varchar(1024), --要分割的字符串

@split varchar(10) --分隔符号

) 

returns int 

as 

begin 

declare @location int 

declare @start int 

declare @length int 

declare @len int

set @len=datalength(@split)  --add

set @str=ltrim(rtrim(@str)) 

set @location=charindex(@split,@str) 

set @length=1 

while @location<>0 

begin 

set @start=@location+@len 

set @location=charindex(@split,@str,@start) 

set @length=@length+1 

end 

return @length 

end

GO

/*-----------------------------------------------------------------------------------------

* Copyright(C) 2008  版权所有

* 功能描述:得到要索引的字符串

* 创建标识:亦心,2009年月日

* 修改标识:

-----------------------------------------------------------------------------------------*/

IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[dbo].Fun_GetStrArrayStrOfIndex') AND type in (N'FN', N'PC'))

    DROP FUNCTION [dbo].Fun_GetStrArrayStrOfIndex

GO

CREATE function Fun_GetStrArrayStrOfIndex 

( 

@str varchar(1024), --要分割的字符串

@split varchar(10), --分隔符号

@index int --取第几个元素

) 

returns varchar(1024) 

as 

begin 

declare @location int 

declare @start int 

declare @next int 

declare @seed int 

set @str=ltrim(rtrim(@str)) 

set @start=1 

set @next=1 

set @seed=datalength(@split) 

set @location=charindex(@split,@str) 

while @location<>0 and @index>@next 

begin 

set @start=@location+@seed 

set @location=charindex(@split,@str,@start) 

set @next=@next+1 

end 

if @location =0 select @location =datalength(@str)+1 

--这儿存在两种情况:、字符串不存在分隔符号2、字符串中存在分隔符号,跳出while循环后,@location为,那默认为字符串后边有一个分隔符号。

return substring(@str,@start,@location-@start) 

end

GO

/*-----------------------------------------------------------------------------------------

* Copyright(C) 2008  版权所有

* 功能描述:得到字符串列表

* 创建标识:亦心,2009年月日

* 修改标识:

-----------------------------------------------------------------------------------------*/

if exists(select * FROM dbo.sysobjects WHERE id=object_id(N'dbo.Fun_SplitStr') AND type in (N'FN', N'PC'))

      DROP FUNCTION Fun_SplitStr

GO

CREATE  function Fun_SplitStr

(

    @SourceSql   varchar(8000),

    @StrSeprate   varchar(100))

    returns   @temp   table(F1   varchar(100)

)  

  as    

  begin  

  declare   @ch   as   varchar(100)  

  set   @SourceSql=@SourceSql+@StrSeprate     

  while(@SourceSql<>'')  

                  begin  

                  set   @ch=left(@SourceSql,charindex(@StrSeprate,@SourceSql,1)-1)  

  insert   @temp   values(@ch)  

  set   @SourceSql=stuff(@SourceSql,1,charindex(@StrSeprate,@SourceSql,1),'')  

                  end  

  return  

  END

  GO

/*-----------------------------------------------------------------------------------------

* Copyright(C) 2008  版权所有

* 功能描述:合并处理函数

* 创建标识:亦心,2009年月日

* 修改标识:

-----------------------------------------------------------------------------------------*/

if exists(select * FROM dbo.sysobjects WHERE id=object_id(N'dbo.Fun_Join') AND type in (N'FN', N'PC'))

      DROP FUNCTION Fun_Join

GO

CREATE FUNCTION dbo.Fun_Join(@col1 varchar(10))

RETURNS varchar(100)

AS

BEGIN

    DECLARE @re varchar(100)

    SET @re=''

    SELECT @re=@re+','+CAST(col2 as varchar)

    FROM tb

    WHERE col1=@col1

    RETURN(STUFF(@re,1,1,''))

END

GO

每天进步一点点...