首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
iiprogram (74)
nizhigang2000 (3)
hongbo781202 (81)
Kendiv (113)
TechnoFantasy (52)
feifei1018 (19)
coofucoo (108)
qingrun (67)
btbtd (83)
longrujun (64)
CSDN - 文档中心 - 数据库开发 阅读:3672   评论: 0    参与评论
标题   SQL分隔字符串的存储过程     选择自 Not 的 Blog
关键字   SQL 存储过程 分隔字符串 Not
出处  
我在做一个项目时研究了查询多个关键字的技术,这是其中用到的一个技术。
“分隔字符串”存储过程的作用就是把“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
 
----------
Not
MSN Messenger : notking@hotmail.com
 

相关文章
对该文的评论