怎么查找字段中的一段

在坚持几年 2011-07-05 11:26:18
id desc
1 17我是只大老鼠;18我不是小花猫;19亚历山大;
2 14亚里士多德;15加利福尼亚;18面板夹筷子;
3 23亚历山大;11加利福尼亚;



要把所有18开头的到下一个;结尾中间部分取出来
比如
1 18我不是小花猫
2 18面板夹筷子
...全文
60 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr_Nice 2011-07-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fredrickhu 的回复:]

SQL code
select
id,[desc]
from
(
select id, parsename(replace([desc],';','.'),1) as [desc] from tb
union all
select id, parsename(replace([desc],';','.'),2) as [desc] from tb
union all
select id,……
[/Quote]

同意这个算法...
yuerjiajia 2011-07-05
  • 打赏
  • 举报
回复

SELECT ID,
SUBSTRING(SUBSTRING(CONTENT,CHARINDEX('18',CONTENT),LEN(CONTENT)-CHARINDEX('18',CONTENT)+1),1,
CHARINDEX(';',SUBSTRING(CONTENT,CHARINDEX('18',CONTENT),LEN(CONTENT)-CHARINDEX('18',CONTENT)+1))-1)FROM TB
WHERE CHARINDEX('18',CONTENT)>0

我把DESC字段名改为CONTENT了 DESC是保留字
--小F-- 2011-07-05
  • 打赏
  • 举报
回复
select
id,[desc]
from
(
select id, parsename(replace([desc],';','.'),1) as [desc] from tb
union all
select id, parsename(replace([desc],';','.'),2) as [desc] from tb
union all
select id, parsename(replace([desc],';','.'),3) as [desc] from tb
)t
where
[desc] like '18%'
--小F-- 2011-07-05
  • 打赏
  • 举报
回复
分拆 UNION ALL

再模糊查询
在坚持几年 2011-07-05
  • 打赏
  • 举报
回复
没人回答吗
ly745455 2011-07-05
  • 打赏
  • 举报
回复
膜拜各位 牛人
-晴天 2011-07-05
  • 打赏
  • 举报
回复
create table tb(id int,[desc] nvarchar(100))
insert into tb select 1,'17我是只大老鼠;18我不是小花猫;19亚历山大;'
insert into tb select 2,'14亚里士多德;15加利福尼亚;18面板夹筷子;'
insert into tb select 3,'23亚历山大;11加利福尼亚;'
go
select id,substring([desc],charindex('18',[desc]),charindex(';',[desc],charindex('18',[desc])+1)-charindex('18',[desc])) [desc]
from tb
where charindex('18',[desc])>0
/*
id desc
----------- ----------------------------------------------------------------------------------------------------
1 18我不是小花猫
2 18面板夹筷子

*/
go
drop table tb
在坚持几年 2011-07-05
  • 打赏
  • 举报
回复
不行啊,parsename最大只能取4个,字段的 ;符号个数是不定的

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧