① sql分割字符串查询,分组统计
首先掌握sql中分割字符串的方法:
declare @sql varchar(2000),@tsql nvarchar(max),@split varchar(100)
set @sql='1,3,5,6,8' --保存的字符
set @split=','--分隔符
select @tsql='select '''+replace(@sql,@split,''' union all select ''')+''''
exec(@tsql)
----完成之后将查询结果保存在一张临时表中。
然后使用 select count(*) , 字段名 from 表名 group by 字段名 就可以得到您想要的结果了。
希望对您有所帮助!
② sql语句进行字符串分割
substr(字符串,截取开始位置,截取长度) //返回截取的字
substr('Hello World',0,1) //返回结果为 'H' *从字符串第一个字符开始截取长度为1的字符串
substr('Hello World',1,1) //返回结果为 'H' *0和1都是表示截取的开始位置为第一个字符
substr('Hello World',2,4) //返回结果为 'ello'
substr('Hello World',-3,3)//返回结果为 'rld' *负数(-i)表示截取的开始位置为字符串右端向左数第i个字符
③ SQL 一个字段进行拆分
建议你使用导出纯文本,之后采用ultraedit处理替换间隔符,然后对应建立一个表再导入回去即可。
也是比较省力气的。
④ sql语句 拆分
select 这个地方就是查询的字段,然后IP是自定义的名字 'IP'=substring(拆分的字段名,b.number,charindex('拆分的符号',拆分的字段名+',',b.number)-b.number) from 你的表名 a
inner join master.dbo.spt_values b on b.number between 1 and len(拆分的字段名)
and substring(','+拆分的字段名,b.number,1)='拆分的符号'
where b.type='P' 后边可以是条件 and Id=1
⑤ sql 分割查询语句
select * from tbl where teacherld like '%,2,%' or teacherld like '%,2' or teacherld like '2,%'
⑥ sql分割字符串
不知道你用的是什么数据库,数据库不同所用的函数也不一样。
不过大概意思可以说一下,先定位“:”找到他的位置,然后定位")",找到他的位置。(如果不写第几个,那么默认找第一个)
然后用")"的位置-“:”的位置-1=截取长度
“:”的位置+1=截取开始点
大概就这么个意思
举例:
AA公司(原名:某有限公司) 原名:KKK公司) 某有限公司
这时用定位函数知道“:”在第8位 “)”在第14位
那么就需要截取14-8-1=5位
截取的开始点为第9位
也就是说截取9到13位,因为第9位也算,所以就是9,10,11,12,13五个字符,就是某有限公司。
因为所用数据库不一样,定位函数也不同,oracle用的是instr,并用substr截取。
sql server用的什么函数,我不是很清楚。不过大概意思也是这样的。
⑦ SQL如何把多条数据拆分
drop table test
create table test
(
VID int primary key,
VNum int,
vname varchar(10),
score int
)
insert into test values(1,001,'大海',20)
insert into test values(2,001,'大海',30)
insert into test values(3,001,'大海',40)
drop function fn_test
alter function fn_test
(
@vnum int
)
returns varchar(20)
as
begin
declare @str varchar(20)
select @str = isnull(@str+',','') + cast(score as varchar(2)) from test
return @str
end
go
select top 1 vid,vnum,vname,dbo.fn_test(vnum) as '分数' from test
/**
vid vnum vname 分数
----------- ----------- ---------- --------------------
1 1 大海 20,30,40
(所影响的行数为 1 行)
**/
可以了 呵呵呵呵呵
***********************************************************************************************这个是在SQL SERVER里执行的啊****************
⑧ SQL拆分逗号分隔的字符串
1、首先点击新建查询按钮,新建一个查询。
⑨ sql 分割字符串
select SUBSTRING (A列 , 1 ,CHARINDEX ( ' ' , A列 ) ) from A表
这个可以把A列空格前的字符取出来。
更新
update A表 set B列=(select SUBSTRING (A列 , 1 ,CHARINDEX ( ' ' , A列 ) ))
⑩ sql查询里 怎么拆分字符串(按“/”拆分)
先建立一个自定义函数,之个函数非常有用,建议收入自已的数据库
CREATE FUNCTION mysplit--将以某分隔符分段的字串,按指定的顺序号提取子串:
(@strnvarchar(2000),--源字串
@snint,--提取序号
@Delivarchar(1)--分隔符
)
RETURNSvarchar(100)
AS
BEGIN
declare@firstint,@lastint,@resultvarchar(1000),@sn0int
select@sn0=0,@first=0,@LAST=1,@str=@str+REPLICATE(@DELI,1)
while@sn0!=@sn
begin
select@sn0=@sn0+1,@first=@LAST,@last=charindex(@DELI,@str,@LAST)+1
end
if@last-@first-1<0
set@result=''
else
SET@RESULT=SUBSTRING(@str,@FIRST,@LAST-@FIRST-1)
RETURN(@RESULT)
END
查询方法:
DECLARE@AVARCHAR(100),@BVARCHAR(100),@CVARCHAR(100)
SELECT
@A=DBO.MYSPLIT('A|B|C',1,'|'),
@B=DBO.MYSPLIT('A|B|C',2,'|'),
@C=DBO.MYSPLIT('A|B|C',3,'|')
SELECT@A,@B,@C