SQL Server 字符串分割 自定义函数 以及执行方式
2012-01-15 14:51
357 查看
在数据库新建查询中执行以下代码:
CREATE function [dbo].[SplitStr]
(
@SourceSql varchar(200), @StrSeprate varchar(5))/*此处变量类型可更改为 nvarchar 以便接收中文参数*/
returns @temptable(F1 varchar(100) )
as
begin
declare @ch as varchar(100)
set @SourceSql=@SourceSql+@StrSeprate
while(@SourceSql<>'')
begin
set @ch=left(@SourceSql,charindex(',',@SourceSql,1)-1)
insert @temp values(@ch)
set @SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'')
end
return
end
简单查询执行方式:
SELECT F1 FROM dbo.SplitStr(@StatusList,',')
联合查询执行方式:
Declare @StatusList Nvarchar(500)
SELECT [表1].*FROM 表1 WHERE [表1].[列1] IN (SELECT F1 FROM dbo.SplitStr(@StatusList,','))
游标查询执行方式:
declare cursor_insert cursor for SELECT F1 FROM dbo.SplitStr(@StatusList,',')/*定义游标(红色代码为自定义分割函数简单查询执行方式)*/
declare @i nvarchar(20) /*定义游标遍历时接收数据的参数*/
open cursor_insert /*打开定义的游标*/
fetch cursor_insert into @i /*游标会逐行拿到查询语句所返回的列集合*/
while @@fetch_status=0 /*循环条件:执行到结尾前是否出现问题*/
/*Fetch_Status函数值:
0 FETCH 语句成功。
-1 FETCH 语句失败或此行不在结果集中。
-2 被提取的行不存在。*/
begin
--print @i/*可以打印拿到的列值*/
fetch cursor_insert into @i /*抓取下一条列值存入变量*/
end
close cursor_insert /*关闭当前游标*/
deallocate cursor_insert/*删除游标与游标名称或游标变量之间的关联。如果一个名称或变量是最后引用游标的名称或变量,则将释放游标,游标使用的任何资源也随之释放。*/
CREATE function [dbo].[SplitStr]
(
@SourceSql varchar(200), @StrSeprate varchar(5))/*此处变量类型可更改为 nvarchar 以便接收中文参数*/
returns @temptable(F1 varchar(100) )
as
begin
declare @ch as varchar(100)
set @SourceSql=@SourceSql+@StrSeprate
while(@SourceSql<>'')
begin
set @ch=left(@SourceSql,charindex(',',@SourceSql,1)-1)
insert @temp values(@ch)
set @SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'')
end
return
end
简单查询执行方式:
SELECT F1 FROM dbo.SplitStr(@StatusList,',')
联合查询执行方式:
Declare @StatusList Nvarchar(500)
SELECT [表1].*FROM 表1 WHERE [表1].[列1] IN (SELECT F1 FROM dbo.SplitStr(@StatusList,','))
游标查询执行方式:
declare cursor_insert cursor for SELECT F1 FROM dbo.SplitStr(@StatusList,',')/*定义游标(红色代码为自定义分割函数简单查询执行方式)*/
declare @i nvarchar(20) /*定义游标遍历时接收数据的参数*/
open cursor_insert /*打开定义的游标*/
fetch cursor_insert into @i /*游标会逐行拿到查询语句所返回的列集合*/
while @@fetch_status=0 /*循环条件:执行到结尾前是否出现问题*/
/*Fetch_Status函数值:
0 FETCH 语句成功。
-1 FETCH 语句失败或此行不在结果集中。
-2 被提取的行不存在。*/
begin
--print @i/*可以打印拿到的列值*/
fetch cursor_insert into @i /*抓取下一条列值存入变量*/
end
close cursor_insert /*关闭当前游标*/
deallocate cursor_insert/*删除游标与游标名称或游标变量之间的关联。如果一个名称或变量是最后引用游标的名称或变量,则将释放游标,游标使用的任何资源也随之释放。*/
相关文章推荐
- Sql Server 优化----SQL语句的执行方式与锁以及阻塞的关系
- 配置SQL Server 2005 Express的身份验证方式,以及如何启用sa登录名(转)
- SQL Server分割字符串
- SQL SERVER 拼字符串方式 固定表名 游标变量范例
- SQL SERVER里用SPLIT函数分割字符串
- 三种不同的方式来保存分割后的字符串--strtok
- 创建Java对象的五种方式以及JVM对字符串处理
- sql server中Select count(*)和Count(1)的区别和执行方式
- sql server查询可编程对象定义的方式对比以及整合
- SQL Server 游标运用:鼠标轨迹字符串分割
- 自己实现的一个字符串分割截取函数,以及查找指定字符
- ajax全局事件引用方式以及各个事件(全局/局部)执行顺序
- C/C++浮点数的存储方式,以及实现一个ftoa函数将浮点数转换为字符串
- 正则表达式,字符串分割,以及分割后的字符串数组的长度
- 浅谈iOS延迟执行的几种方式以及比较
- mysql 字符串分割 和 动态执行拼接sql
- 表连接方式概念以及在执行计划中执行步骤[摘]
- SQL Server 执行计划中的扫描方式举例说明
- 二维字符串数组的输入、输出方式 以及冒泡法排序
- PHP把下划线分隔命名的字符串转换成驼峰式命名方式(带10万次执行效率测试结果)