SQL分隔字符串的存储过程

存储过程|字符串

我在做一个项目时研究了查询多个关键字的技术,这是其中用到的一个技术。“分隔字符串”存储过程的作用就是把“jiangjs,shenxy,cheng”类的字符串隔开保存到一个表中。  CREATE PROCEDURE [分隔字符串]
(
 @String NVARCHAR(1000),  -- 要分隔的字符串
 @SPLITCHAR NVARCHAR(10) = ',', -- 分隔字符
 @TableName NVARCHAR(50),  -- 存入的表名称
 @FieldName NVARCHAR(50) = '[ID]' -- 存入的字段名称
)
AS -- 将字符串分隔开放进表中 DECLARE @L INT -- 第一个分隔字符的位置
DECLARE @S INT -- 第二个分隔字符的位置
SET @L = 0
SET @S = CHARINDEX(@SPLITCHAR, @String, @L) WHILE @L <= LEN(@String)
BEGIN
 DECLARE @ID NVARCHAR(50)   IF @S = 0 SET @S = LEN(@String) + 1 -- 如果到最后一个字符串那么第二个分隔字符的位置就是这个字符串的长度加一
 
 SET @ID = SUBSTRING(@String, @L, @S - @L) -- 取值
 SET @L = @S + 1
 SET @S = CHARINDEX(@SPLITCHAR, @String, @L)  IF LTRIM(RTRIM(@ID)) = '' CONTINUE -- 如果是空字符串就跳过  DECLARE @SQL NVARCHAR(1000)
 SET @SQL = 'INSERT INTO ' + @TableName + ' ('+ @FieldName +') VALUES(''' + @ID + ''')'
 EXEC sp_executesql @SQL
END
GO ----------NotMSN Messenger : notking@hotmail.com 

时间: 2024-10-09 17:44:01

SQL分隔字符串的存储过程的相关文章

sql 执行存储过程-sql 字符串执行存储过程

问题描述 sql 字符串执行存储过程 insert into #t exec [acwh].dbo.[ud_GetStore] '2014-05-01','2014-08-01' 这样可以运行,但是由于 数据库(acwh)名字是参数,我想把它整个拼接成字符串,要怎么做 解决方案 declare @sqlText varchar(max) set @sqlText='' @sqlText='insert into #t;exec'+@acwh+'dbo.[ud_GetStore]''+... @a

sql 分割字符串(1/2)

本文章来讲一下关于sql 分割字符串哦,如何进行sql字符串拆分操作了,在mmsql server中要分割就会要用到存储过程哦,其实的sql一般时实现不了的哈. 用临时表作为数组 create function f_split(@c varchar(2000),@split varchar(2)) returns @t table(col varchar(20)) as begin while(charindex(@split,@c)<>0) begin insert @t(col) valu

在PL/SQL 开发中调试存储过程和函数的一般性方法

存储过程|函数 在PL/SQL 开发中调试存储过程和函数的一般性方法摘要: Oracle 在PLSQL中提供的强大特性使得数据库开发人员可以在数据库端完成功能足够复杂的任务, 本文将结合Oracle提供的相关程序包(package)以及一个非常优秀的第三方开发工具来介绍在PLSQL中开发及调试存储过程的方法,当然也适用于函数. 版权声明: 本文可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息.原文出处: http://www.aiview.com/notes/ora_using_

SQL 数据库中的存储过程的参数问题

  1.SQL 数据库中的存储过程的参数问题 怎么将SQL数据库中的存储过程中的参数既作为输出变量又作为输出变量? [sql] view plaincopy --drop proc proc_test --go create proc dbo.proc_test @in int, @out int out, @in_out int output as select @out = @in + @in_out, --1 + 2 = 3 @in_out = @out + 1 --3 + 1 = 4 g

SQL Server 字符串处理函数

SQL Server 字符串处理函数 ASCII:返回字符表达式中最左侧的字符的 ASCII 代码值. select ASCII(expression) CHAR:将 int ASCII 代码转换为字符. CHAR 可用于将控制字符插入字符串中 制表符 char(9) 换行符 char(10) 回车符 char(13) CHARINDEX:在 expression2 中搜索 expression1 并返回其起始位置(如果找到).搜索的起始位置为 start_location.如果 express

几种SQL Server分页的存储过程写法以及性能比较

几种SQL Server分页的存储过程写法以及性能比较 存储过程的5种分页写法,下面的代码是从忘了什么时候从别人那Ctrl+C来的,所以仅仅作为收藏,希望作者看到不要喷我.  ------创建数据库教程data_Test ----- create database data_Test  GO use data_Test GO create table tb_TestTable   --创建表 (     id int identity(1,1) primary key,     userName

用XML和SQL 2000来管理存储过程调用_XML/RSS

创建多个带有不同参数的存储过程(stored procedure)来完成同一个任务总是一个很大的负担.利用XML字符串向你的存储过程发送参数就能够简化这个任务:这也让COM组件的设计更简单.  实现这个目的的方法是将你的参数作为一个XML字符串来传递,并剖析XML来取回你所需要的数据,然后继续实现你所需要集成的功能.你不仅可以通过XML来获取一些参数,你还可以对XML所创建的DOM文档运行查询,以此来封装多个存储过程.我会提供一些例子,告诉你如果实现这个目的,并简要地描述每个例子. 在本例里,为

有用的SQL Server语句和存储过程

server|存储过程|语句 SQL  Server语句和存储过程   -- ====================================================== --列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息 --在查询分析器里运行即可,可以生成一个表,导出到EXCEL中 -- ====================================================== SELECT        (case when a

sql server中扩展存储过程随笔(几个有用的PROCEDURE小总结)

server|存储过程 在sql server中扩展存储过程直接使用的机会不是很多 我把我知道的几个有用的扩展存储过程使用方式总结如下:     --获得MS SQL的版本号 execute master..sp_msgetversion go Character_Value                              -------------------- ----------- ----------- 8.00.760             1           3