关于截取数据库字符串
2012-08-25 13:57
246 查看
今天在论坛看到一个帖子,觉得很好玩,就去弄了一下。问题是这样的。
有张 Log表
User表
需要实现的效果是
我用的存储过程来实现的
贴出来,分享一下。
有张 Log表
User表
需要实现的效果是
我用的存储过程来实现的
create proc Ganker as declare @num int set @num=0 declare @str1 varchar(50) declare @str2 varchar(50) declare @i int declare @j int declare @val1 varchar(50) declare @val2 varchar(50) declare @name1 varchar(50) declare @name2 varchar(50) declare @txt varchar(100) declare @count int select @count=COUNT(*) from [log] begin while(@count>=@num+1) begin select top(1) @str1=Title from [Log] where id not in (select top(@num) id from [Log]) -- 一次读取一条数据 set @i=charindex('{',@str1)--获取第一个前括号 set @j=CHARINDEX('}',@str1)-- 获取第一个后括号 set @val1=substring(@str1,@i+1,@j-@i-1)-- 获取括号里面的 UserID set @str1=SUBSTRING(@str1,@j+1,len(@str1)-@j+1)-- 获取去除括号后的Title set @i=CHARINDEX('{',@str1) -- 在去除第一个括号后 再次截取'{' 看是否有值 if(@i=0) --为0说明 没有括号了 begin select @name1=name from [User] where UserID=@val1 --根据ID 获取 名字 set @txt=@name1+@str1 print @txt end else --如果不为0 说明还有括号 begin set @str2=SUBSTRING(@str1,1,@i-1) --截取 两个括号之间的文字 set @j=CHARINDEX('}',@str1) --获取后一个括号的'}' set @val2=substring(@str1,@i+1,@j-@i-1) --获取第二个括号内的 UserId select @name1=name from [User] where UserID=@val1 --获取第一个括号里UserID的名字 select @name2=name from [User] where UserID=@val2 --获取第二个括号里UserID的名字 if(@j<LEN(@str1)) -- 如果后一个括号的长度 < 截取后title的长度 说明'}'后面还有内容 begin set @str1=SUBSTRING(@str1,@j+1,len(@str1)-@j+1) --获取第二个括号后面的内容 set @txt=@name1+@str2+@name2+@str1 print @txt end else -- 如果后一个括号的长度 = 截取后title的长度 说明'}'后面没有内容了 begin set @txt = @name1+@str2+@name2 print @txt end end set @num=@num+1 end end
贴出来,分享一下。
相关文章推荐
- 关于数据库分割及截取字符串
- 关于java 截取特定字符串的探索
- asp.net 关于字符串内范围截取的一点方法总结
- 关于C#截取字符串问题!
- Web.config中关于数据库连接字符串配置问题
- 关于截取超长字符串的办法
- 关于json格式字符串解析并用mybatis存入数据库
- 关于数据库连接字符串问题(第五部分连接access-2007)
- Bind("入库日期", "{0:yyyy-MM-dd}") 关于asp.net格式化数据库日期字符串
- 关于数据库的中的Date类型的数据,在datagrid中显示为字符串格式(例如显示效果2017-10-1)
- 关于字符串截取问题简单说明
- 关于utf8字符串处理,字符串截取乱码问题
- 关于字符串的截取各种方法讲解
- cocos2dx RichText关于字符串截取的bug
- 字符串截取中关于正则表达式的应用
- 关于绑定了GridView控件后怎么截取字符串和CSS样式来控制表头不换行
- 关于截取超长字符串的办法
- 数据库截取字符串
- 发现数据库字符串长度被截取
- 关于截取字符串的java笔试(面试)题简化代码实现