当前位置:首页 » 编程语言 » sql字符串切分
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql字符串切分

发布时间: 2022-08-23 03:23:25

sql语句进行字符串分割

你是什么数据库?mysql
按照第一个*号前面的字符串分组
然后汇总
select
a,sum(b)
from
pppppp.tablename1
group
by
substring_index(a,'*',1)
limit
0,
50
按照第二个*前面的字符串分组
然后汇总
select
a,sum(b)
from
pppppp.tablename1
group
by
substring_index(a,'*',2)
limit
0,
50

❷ 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

❸ SQL拆分逗号分隔的字符串

1、首先点击新建查询按钮,新建一个查询。

❹ sql如何实现字符串分割

你好,很高兴回答你的问题。
你的这个问题是要实现第二张图的界面效果吧。
是有一个系统访问数据库去实现的吧。
这个逻辑完全可以放在你的系统中查询出结果后通过业务代码来处理实现。
功能都看数据库实现其实也是不太合适的。数据库只是一个存放数据供检索的地方,做太多功能会影响检索效率的。
如果有帮助到你,请点击采纳。

❺ sql字符串怎么按逗号分割

[sql]
view
plainprint?
create
or
replace
function
f_intellect_first_sales_prov(var_sales
in
varchar2,
var_first_sales
in
varchar2,
var_split
in
varchar2)
return
varchar2
is
result
varchar2(1);
/****************************************************
**
[sql]
view
plainprint?
**
all
rights
reserved.
**
**
函数名称:f_intellect_first_sales_province
**

数:【名称】
【类型

【说明】
**
var_sales
varchar2
字符串1,逗号分隔的,如'aaa,bbb'
var_first_sales
varchar2
字符串2,逗号分割的,如'cc,aaa'
**
var_split
varchar2
要使用的分隔符
**


值:result
varchar2
处理后返回的值1/0
**

要:如果字符串2中的某一个分割的字符串在字符串1中就返回1,否则返回0
**
**
当前版本:1.0
**
**

者:liuh
**
完成日期:2013年1月29日
**

注:
****************************************************/
var_element
varchar2(4000);
var_element2
varchar2(4000);
var_tmp
varchar2(4000);
var_tmp2
varchar2(4000);
begin
result
:=
'0';
var_tmp
:=
var_sales;
var_tmp2
:=
var_first_sales;
if
var_tmp2
is
null
or
var_tmp2
=''
then
return(result);
elsif
var_tmp
is
null
or
var_tmp
=''
then
return(result);
else
/*如果字符串1不为空,在后面加上一个特殊的字符,
这样循环时就可以直接在循环内部处理,不然需要在最外面循环出再一次处理var_tmp,因为最后一次var_tmp中不含有分隔符,不会进行loop循环*/
var_tmp
:=
var_tmp
||
var_split
||
'-1';
end
if;
while
instr(var_tmp,
var_split)
>
0
loop
/****循环字符串1,每次获得一个var_element****/
var_element
:=
substr(var_tmp,
1,
instr(var_tmp,
var_split)
-
1);
var_tmp
:=
substr(var_tmp,
instr(var_tmp,
var_split)
+
length(var_split),
length(var_tmp));
while
instr(var_tmp2,
var_split)
>
0
loop
/****循环字符串2,每次获得一个var_element2****/
var_element2
:=
substr(var_tmp2,
1,
instr(var_tmp2,
var_split)
-
1);
var_tmp2
:=
substr(var_tmp2,
instr(var_tmp2,
var_split)
+
length(var_split),
length(var_tmp2));
/*如果字符串1中有字符串2中的一个值,返回1*/
if
var_element
=
var_element2
then
result
:=
'1';
return(result);
end
if;
end
loop;
/*最后一个截取的var_tmp2
不会进入循环
所以在此处处理
如果字符串1中含有字符串2的一个值,返回1*/
if
var_element
=
var_tmp2
then
result
:=
'1';
return(result);
end
if;
end
loop;
return(result);
end
f_intellect_first_sales_prov;

❻ SQL 特定字符串分割

	SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO

CREATEfunction[dbo].[SplitString]
(
@Inputnvarchar(max),
@Separatornvarchar(max)=',',
@RemoveEmptyEntriesbit=1
)
returns@TABLEtable
(
[Id]intidentity(1,1),
[Value]nvarchar(max)
)
as
begin
declare@Indexint,@Entrynvarchar(max)
set@Index=charindex(@Separator,@Input)

while(@Index>0)
begin
set@Entry=ltrim(rtrim(substring(@Input,1,@Index-1)))

if(@RemoveEmptyEntries=0)or(@RemoveEmptyEntries=1and@Entry<>'')
begin
insertinto@TABLE([Value])Values(@Entry)
end

set@Input=substring(@Input,@Index+datalength(@Separator)/2,len(@Input))
set@Index=charindex(@Separator,@Input)
end

set@Entry=ltrim(rtrim(@Input))
if(@RemoveEmptyEntries=0)or(@RemoveEmptyEntries=1and@Entry<>'')
begin
insertinto@TABLE([Value])Values(@Entry)
end

return
end

方法是其他地方找的

set@str1='1,2,3'
select[Value]from[dbo].[SplitString](@str1,',',1)

❼ sql如何根据隔符分割字符串

  1. 数据库自带的substring()、charindex()函数,可以根据需要截取字符串,但并不能实现分割

  2. 自己写分割函数,以下可以参考:

createfunctionGetStr
(
@strvarchar(1024),--要分割的字符串
@splitvarchar(10),--分隔符号
@indexint--取第几个元素
)
returnsvarchar(1024)
as
begin
declare@locationint
declare@startint
declare@nextint
declare@seedint
set@str=ltrim(rtrim(@str))
set@start=1
set@next=1
set@seed=len(@split)

set@location=charindex(@split,@str)
while@location<>0and@index>@next
begin
set@start=@location+@seed
set@location=charindex(@split,@str,@start)
set@next=@next+1
end
if@location=0select@location=len(@str)+1
returnsubstring(@str,@start,@location-@start)
end

❽ SQl语句查出来的字符串怎么分段

select
decode(f1,'1','1,你好','1,2','1、你好;2、我很好;'
from al;

试试DECODE函数

❾ 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语句如何将一个字符串拆分重组

您好,您可以参考下面的程序:
declare @str varchar(20)
set @str = 'abcdefg'
declare @i int
declare @count int
select @count = 0
select @i = len(@str)

declare @str1 varchar(20)
select @str1 = ''
while (@i > @count)
begin
select @count = @count + 1
select @str1 = @str1 + substring (@str,@count,1) + '.'

end

print @str1
这个字符串,你可以从表字段中获取,也或者可以直接赋值,最好@str1就是你想要的输出。