sql字段里有逗号隔开的数据,怎么取值
发布网友
发布时间:2022-04-07 18:24
我来回答
共5个回答
热心网友
时间:2022-04-07 19:53
sql字段有逗号隔开,数据取值的方法。
如下参考:
1.查询数据库表的所有字段,直接使用select语句,如下图。
2.查询数据库表部分的字段,可以使用select字段命令,从数据库表中选择字段名度。
3.根据查询的条件,在where之后使用条件,从数据库表中选择字段名所在的条件。
4.使用distinct命令查询数据库字段,以记录未重复的结果,如下图所示。
5.查询数据库表数据之前有多少条,可以使用top命令,从数据库表中选择*号。
6.查询数据库表有时为了区分字段,需要回答字段名,可以用as,从数据库表中选择字段名作为字段名。
热心网友
时间:2022-04-07 21:11
测试数据with table1(id,code) as (select 1,'001' union allselect 2,'001,002' union allselect 3,'001,002,003'),table2(code,name) as(select '001','数学' union allselect '002','体育' union allselect '003','美术') --用charindex和for xml path实现批量替换的功能,适用于sql server 2005及以上版本select table1.id,stuff(( select ','+table2.name from table2 where charindex(','+table2.code+',',','+table1.code+',')>0 order by table2.code for xml path('') ),1,1,'') as name from table1
结果:
热心网友
时间:2022-04-07 22:46
--测试数据
with table1(id,code) as (
select 1,'001' union all
select 2,'001,002' union all
select 3,'001,002,003'),
table2(code,name) as(
select '001','数学' union all
select '002','体育' union all
select '003','美术')
--用charindex和for xml path实现批量替换的功能,适用于sql server 2005及以上版本
select table1.id,stuff((
select ','+table2.name from table2
where charindex(','+table2.code+',',','+table1.code+',')>0
order by table2.code
for xml path('')
),1,1,'') as name
from table1
结果:
热心网友
时间:2022-04-08 00:37
--分隔字符串
ALTER function f_splitstr(@SourceSql varchar(8000),@StrSeprate varchar(100))
returns @temp table(F1 varchar(100))
as
begin
declare @ch as varchar(100)
set @SourceSql=@SourceSql+@StrSeprate
while(@SourceSql<>'')
begin
set @ch=left(@SourceSql,charindex(',',@SourceSql,1)-1)
insert @temp values(@ch)
set @SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'')
end
return
end
GO
--模仿下面的函数 (你的需要一个表连接查询)
Create FUNCTION JoinString --合并字符串 多行合并为一行
(
@UserName varchar(50)
)
RETURNS varchar(8000)
AS
BEGIN
declare @Str varchar(8000)
set @Str = ''
select @Str = @Str +',' + ISNull(BuMenName,'') from ERPUserGuanliDept
where UserName = @UserName
if(@Str<>'')
set @Str=substring(@Str,2,len(@Str)-1)
return @Str
END
--使用时
select distinct UserName,dbo.JoinString(UserName) as DeptList from ERPUserGuanliDept
热心网友
时间:2022-04-08 02:45
一样的取出来,只是取出来后是个字符串,要处理,用explode()函数分隔逗号就行了追问请问具体怎么写?