求如何查找带有分号条件的行

ajdkjalj 2017-10-31 04:36:17
比如数据是
id 编号
1 01;02;102
2 01;102
我要查找编号有02的行,查出来的应该是id为1的行
...全文
520 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
日月路明 2017-11-01
  • 打赏
  • 举报
回复
分被抢光了,来晚了
二月十六 版主 2017-10-31
  • 打赏
  • 举报
回复
就是yenange 版主说的那个问题
吉普赛的歌 版主 2017-10-31
  • 打赏
  • 举报
回复
引用 11 楼 ajdkjalj 的回复:
因为数据库的格式是nchar,这个格式有影响吗
DECLARE @t TABLE (id INT PRIMARY KEY, bh nCHAR(20))
INSERT INTO @t VALUES (1,'01;02;102')
INSERT INTO @t VALUES (2,'01;102')
INSERT INTO @t VALUES (3,'01')
INSERT INTO @t VALUES (4,'02')
 
--nchar 会自动往右边补空串,要加 rtrim
SELECT * FROM @t AS t WHERE ';'+ rtrim(t.bh) +';' LIKE '%'+';02;'+'%' 
/*
id	bh
1	01;02;102           
4	02                  
*/
ajdkjalj 2017-10-31
  • 打赏
  • 举报
回复
引用 9 楼 sinat_28984567 的回复:
[quote=引用 8 楼 ajdkjalj 的回复:] [quote=引用 6 楼 sinat_28984567 的回复:]
[/quote] 把代码发上来[/quote] DECLARE @t TABLE (id INT PRIMARY KEY, bh nCHAR(20)) INSERT INTO @t VALUES (1,'01;02;102') INSERT INTO @t VALUES (2,'01;02') INSERT INTO @t VALUES (3,'01') INSERT INTO @t VALUES (4,'02') SELECT * FROM @t AS t WHERE CHARINDEX(';' + '01' + ';', ';' + bh + ';') > 0 是01应该有3条记录
ajdkjalj 2017-10-31
  • 打赏
  • 举报
回复
引用 10 楼 yenange 的回复:
大哥, 我写好的代码你不直接复制过去执行, 要自己另外搞一套…… 我的是 : bh VARCHAR(20) 你改成 : bh nCHAR(20) 你换成我的就没问题了
因为数据库的格式是nchar,这个格式有影响吗
吉普赛的歌 版主 2017-10-31
  • 打赏
  • 举报
回复
大哥, 我写好的代码你不直接复制过去执行, 要自己另外搞一套…… 我的是 : bh VARCHAR(20) 你改成 : bh nCHAR(20) 你换成我的就没问题了
二月十六 版主 2017-10-31
  • 打赏
  • 举报
回复
引用 8 楼 ajdkjalj 的回复:
[quote=引用 6 楼 sinat_28984567 的回复:]
[/quote] 把代码发上来
ajdkjalj 2017-10-31
  • 打赏
  • 举报
回复
引用 6 楼 sinat_28984567 的回复:

ajdkjalj 2017-10-31
  • 打赏
  • 举报
回复
引用 5 楼 yenange 的回复:
[quote=引用 4 楼 ajdkjalj 的回复:]
我试了下你们的,不对呢,比如数据是'01;02',这样找‘02’的就一条都找不到了


怎么找不到啊?
DECLARE @t TABLE (id INT PRIMARY KEY, bh VARCHAR(20))
INSERT INTO @t VALUES (1,'01;02;102')
INSERT INTO @t VALUES (2,'01;102')
INSERT INTO @t VALUES (3,'01;02')

SELECT * FROM @t AS t WHERE ';'+t.bh+';' LIKE '%'+';02;'+'%'
/*
id bh
1 01;02;102
3 01;02
*/
[/quote]
二月十六 版主 2017-10-31
  • 打赏
  • 举报
回复
吉普赛的歌 版主 2017-10-31
  • 打赏
  • 举报
回复
引用 4 楼 ajdkjalj 的回复:
我试了下你们的,不对呢,比如数据是'01;02',这样找‘02’的就一条都找不到了
怎么找不到啊?
DECLARE @t TABLE (id INT PRIMARY KEY, bh VARCHAR(20))
INSERT INTO @t VALUES (1,'01;02;102')
INSERT INTO @t VALUES (2,'01;102')
INSERT INTO @t VALUES (3,'01;02')

SELECT * FROM @t AS t WHERE ';'+t.bh+';' LIKE '%'+';02;'+'%' 
/*
id	bh
1	01;02;102
3	01;02
*/
ajdkjalj 2017-10-31
  • 打赏
  • 举报
回复
引用 3 楼 sinat_28984567 的回复:
--测试数据
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T([id] int,[编号] nvarchar(29))
Insert #T
select 1,N'01;02;102' union all
select 2,N'01;102'
Go
--测试数据结束
DECLARE @str NVARCHAR(100)='02'  --相查的数据
SELECT  *
FROM    #T
WHERE   CHARINDEX(';' + @str + ';', ';' + 编号 + ';') > 0
引用 1 楼 yenange 的回复:
DECLARE @t TABLE (id INT PRIMARY KEY, bh VARCHAR(20))
INSERT INTO @t VALUES (1,'01;02;102')
INSERT INTO @t VALUES (2,'01;102')

SELECT * FROM @t AS t WHERE ';'+t.bh+';' LIKE '%'+';02;'+'%' 
/*
id	bh
1	01;02;102
*/
我试了下你们的,不对呢,比如数据是'01;02',这样找‘02’的就一条都找不到了
二月十六 版主 2017-10-31
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([id] int,[编号] nvarchar(29))
Insert #T
select 1,N'01;02;102' union all
select 2,N'01;102'
Go
--测试数据结束
DECLARE @str NVARCHAR(100)='02' --相查的数据
SELECT *
FROM #T
WHERE CHARINDEX(';' + @str + ';', ';' + 编号 + ';') > 0


顺势而为1 2017-10-31
  • 打赏
  • 举报
回复
这样如何 ?


if object_id('tempdb..#Tmp_Data') is not null
								drop table #Tmp_Data

CREATE TABLE #Tmp_Data (
             id   int ,
             code  varchar(50))

INSERT INTO #Tmp_Data 
Select 1,'01;02;102' union all
Select 2,'01;102'

UPDATE #Tmp_Data SET code=';'+code+';'
Select * From #Tmp_Data Where Charindex(';02;',code)>0
UPDATE #Tmp_Data SET code=substring(code,2,len(code)-2)

id          code
----------- --------------------------------------------------
1           ;01;02;102;

吉普赛的歌 版主 2017-10-31
  • 打赏
  • 举报
回复
DECLARE @t TABLE (id INT PRIMARY KEY, bh VARCHAR(20))
INSERT INTO @t VALUES (1,'01;02;102')
INSERT INTO @t VALUES (2,'01;102')

SELECT * FROM @t AS t WHERE ';'+t.bh+';' LIKE '%'+';02;'+'%' 
/*
id	bh
1	01;02;102
*/

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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