SQL 查询的时候截取字段在逗号前的部分

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 查询的时候截取字段在逗号前的部分相关的知识,希望对你有一定的参考价值。

参考技术A

1、查询数据库表所有的字段,直接利用select语句。

2、查询数据库表部分字段,可以利用select 字段 命令,select 字段名 from 数据库表。

3、按照条件查询,利用where后面加条件,select 字段名 from 数据库表 where 条件。

4、查询数据库字段记录不重复的结果,利用distinct 命令。

5、查询数据库表数据前多少条,可以利用top命令,select top 数字 * from 数据库表。

6、查询数据库表有时为了区分字段,需要给字段起个别名,可以利用as,select 字段名 as 字段名 from 数据库表。

sql 如何以逗号为分隔符分割一个字段的值

写了个sql分割,感觉写的超级复杂。有没有简单的方法?toad不支持split函数。。。。
SELECT osys.DOWNLOADFLOWLIST, SUBSTR (osys.DOWNLOADFLOWLIST, 0, INSTR (osys.DOWNLOADFLOWLIST, ',', 1) -1) AS time1,SUBSTR (osys.DOWNLOADFLOWLIST, INSTR (osys.DOWNLOADFLOWLIST, ',', 1)+ 1, INSTR (osys.DOWNLOADFLOWLIST, ',', 1,2) -INSTR (osys.DOWNLOADFLOWLIST, ',', 1, 1)-1) AS time2,SUBSTR (osys.DOWNLOADFLOWLIST, INSTR (osys.DOWNLOADFLOWLIST, ',', 1, 2)+ 1, INSTR (osys.DOWNLOADFLOWLIST, ',', 1,3) -INSTR (osys.DOWNLOADFLOWLIST, ',', 1, 2)-1) AS time3,SUBSTR (osys.DOWNLOADFLOWLIST, INSTR (osys.DOWNLOADFLOWLIST, ',', 1, 3)+ 1, INSTR (osys.DOWNLOADFLOWLIST, ',', 1,4) -INSTR (osys.DOWNLOADFLOWLIST, ',', 1, 3)-1) AS time4,SUBSTR (osys.DOWNLOADFLOWLIST, INSTR (osys.DOWNLOADFLOWLIST, ',', 1, 4)+ 1, INSTR (osys.DOWNLOADFLOWLIST, ',', 1,5) -INSTR (osys.DOWNLOADFLOWLIST, ',', 1, 4)-1) AS time5,SUBSTR (osys.DOWNLOADFLOWLIST, INSTR (osys.DOWNLOADFLOWLIST, ',', 1, 5)+ 1, INSTR (osys.DOWNLOADFLOWLIST, ',', 1,6) -INSTR (osys.DOWNLOADFLOWLIST, ',', 1, 5)-1) AS time6,SUBSTR (osys.DOWNLOADFLOWLIST, INSTR (osys.DOWNLOADFLOWLIST, ',', 1, 6)+ 1, INSTR (osys.DOWNLOADFLOWLIST, ',', 1,7) -INSTR (osys.DOWNLOADFLOWLIST, ',', 1, 6)-1) AS time7,SUBSTR (osys.DOWNLOADFLOWLIST, INSTR (osys.DOWNLOADFLOWLIST, ',', 1, 7)+ 1, INSTR (osys.DOWNLOADFLOWLIST, ',', 1,8) -INSTR (osys.DOWNLOADFLOWLIST, ',', 1, 7)-1) AS time8,SUBSTR (osys.DOWNLOADFLOWLIST, INSTR (osys.DOWNLOADFLOWLIST, ',', 1, 8)+ 1, INSTR (osys.DOWNLOADFLOWLIST, ',', 1,9) -INSTR (osys.DOWNLOADFLOWLIST, ',', 1, 8)-1) AS time9,SUBSTR (osys.DOWNLOADFLOWLIST, INSTR (osys.DOWNLOADFLOWLIST, ',', 1, 9)+ 1 ) AS time10 FROM OTT_STB_VIDEO_ALARM osva INNER JOIN ott_systeminfo osysON osys.id = osva.SYSTEMINFO_ID WHERE osva.alarm_id = 3950;

可用substring函数。

创建测试表及数据:

create table test
(id varchar(10));

insert into test values (\'123abc\');
insert into test values (\'456def\');
insert into test values (\'789ghi\');

执行:

select substring(id,1,3) +\',\'+substring(id,4,3) as id from test

结果截图:

也就显示成了用逗号分隔的样子。

参考技术A create function f_split(@c varchar(2000),@split varchar(2))
returns @t table(col varchar(20))
as
begin

while(charindex(@split,@c)<>0)
begin

insert @t(col) values (substring(@c,1,charindex(@split,@c)-1))
set @c = stuff(@c,1,charindex(@split,@c),'')
end
insert @t(col) values (@c)
return
end
go

select * from dbo.f_split('dfkd,dfdkdf,dfdkf,dffjk',',')
参考技术B create function f_split(@c varchar(2000),@split varchar(2))
returns @t table(col varchar(20))
as
begin

while(charindex(@split,@c)<>0)
begin
insert @t(col) values (substring(@c,1,charindex(@split,@c)-1))
set @c = stuff(@c,1,charindex(@split,@c),'')
end
insert @t(col) values (@c)
return
end
go

select * from dbo.f_split('dfkd,dfdkdf,dfdkf,dffjk',',')
参考技术C 用charindex

以上是关于SQL 查询的时候截取字段在逗号前的部分的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE 如何按逗号截取查询所得的表名

oracle sql 截取表中某一字段的部分作为该字段查询结果

急急急,Sql查询一个字段是不是存在某一个值,怎么写查询语句?

sql字段里有逗号隔开的数据,怎么取值

sql 截取某个字符之前的数据

sql语句怎样将查询结果逗号分开