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

sql拆分字符串函数

发布时间: 2022-02-08 22:18:56

‘壹’ 简单sql语句,如何截取指定分隔符前字符串

一、用到的函数:substring(' ', , )、charindex(' ',' ')
select SUBSTRING('[email protected]',1,charindex('@','[email protected]')-1)
1.substring(字符串表达式,开始位置,长度):
从一个指定字符串的指定位置截取制定长度的字符;
第一个参数表示被截取的字符串;
第二个参数表示要在第一个参数中开始截取的位置;
第三个参数表示要截取的长度。
例如:select substring('abc123',1,2) →返回ab
从字符串‘abc123’的第一个字符开始截取,共截取两个字符,最后得到‘ab’。
2.charindex(字符串表达式1,字符串表达式2[,整数表达式]):
在字符串2中查找字符串1,如果存在返回第一个匹配的位置,如果不存在返回0。如果字符串1和字符串2中有一个是null则返回null。
可以指定在字符串2中查找的起始位置。
例如:select charindex('ab','BCabTabD') → 返回3
select charindex('ab','BCabTabD',4) →返回6

二、用到的函数:left(' ', )、charindex(' ',' ')
select LEFT('[email protected]',charindex('@','[email protected]')-1)
1.left(字符串表达式,整数表达式):
从字符串表达式的最左边开始截取整数表达式个字符。
例如:select left('abcdef',3) →返回abc

‘贰’ SQL拆分逗号分隔的字符串

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

‘叁’ 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字符串怎么按逗号分割

我没看懂你的意思但是我有一样个批量删除的比如
/*
使用存储过程实现如下功能,批量删除实际选中的多个反馈活动。
*/
--包规范
create or replace package pak_activeinfo
as
procere sp_activeinfo
(
i_activeid varchar2
);
end pak_activeinfo;
--包主体
create or replace package body pak_activeinfo
as
procere sp_activeinfo
(
i_activeid varchar2
)
as
activeid1 varchar2(100);
activeid2 varchar2(100);
activeid3 varchar2(10000) := i_activeid;
a number;
b number;
begin
savepoint sp;--回滚点
select instr(activeid3,',') into a from al;
b := a-1;
for i in 1..floor(length(activeid3)/b) loop--改正
--获取第一个编号
select substr(activeid3,1,b) into activeid1 from al;
--修改表
update activeinfo set status = 1 where activeid = activeid1;
--截取第一个编号
select ltrim(activeid3,activeid1) into activeid2 from al;
--去掉,号
select ltrim(activeid2,',') into activeid3 from al;
end loop;
commit;
exception
when no_data_found then
dbms_output.put_line('失败!');
when others then
dbms_output.put_line('读去失败!原因是:'||sqlerrm);
rollback to savepoint sp;
end sp_activeinfo;
end pak_activeinfo;
--测试

begin
pak_activeinfo.sp_activeinfo('1000,1001,1002');
end;
能看懂吗?
按长度用循环去掉逗号!

希望对你有帮助!

‘伍’ SQL字符串拆分的问题

1.先建一个自定义函数,将 abcd 变成 a,b,c,d
create function dbo.[fn_split2]
( @string varchar(100) )
returns varchar(200)
as
begin
declare @i int;
declare @ret varchar(200);
set @ret = '';
set @i = 1;
while @i <= len(@string)
begin
set @ret = @ret + substring(@string,@i,1) + ',';
set @i = @i + 1;
end;
set @ret = substring(@ret,1,len(@ret)-1);
RETURN @ret;
end;
2.再插入A表时使用自定义函数,如
insert into A (lastid) select dbo.fn_split2(blastid) from B;
有问题可以Q我 53650299

‘陆’ sql 字符串拆分

OK!测试通过了。试试吧。觉得好就多加点分

exec decord_a '1a@b2@c3@e4@f5'

---这个存储过程可以提取包含任意个@字符的字符串,通过临时表输出,使用查询分析器或前台数据集都可以得到结果。

create procere decord_A
@STR VARCHAR(100)
AS
declare @n int,@SN INT
SET @N=LEN(@STR)-LEN(REPLACE(@STR,'@',''))--提取字符@的个数
SET @SN=1
CREATE table #TEMP(SN INT,CSTR VARCHAR(100))
WHILE @SN<=@N
BEGIN
INSERT INTO #TEMP SELECT @SN,LEFT(@STR,CHARINDEX('@',@STR)-1)
SELECT @SN=@SN+1,@STR=SUBSTRING(@STR,CHARINDEX('@',@STR)+1,100)
END
INSERT INTO #TEMP SELECT @N+1,@STR
SELECT *FROM #TEMP order by sn
GO

‘柒’ sqlserver拆分字符串用的是什么函数

DECLARE @splitlen int, @re varchar(100)
SET @splitlen=LEN(@split+'a') - 2
WHILE CHARINDEX(@split,@s) > 0 AND @pos > 0
SELECT
@re = LEFT(@s,CHARINDEX(@split,@s)-1),
@s=STUFF(@s,1,CHARINDEX(@split, @s)+@splitlen,''),
@pos = @pos - 1
RETURN(CASE
WHEN @pos = 0 THEN @re
WHEN @pos = 1 THEN @s
ELSE NULL END)
END

‘捌’ 如何用sql语句循环拆分字符串

说实话,这个功能很多人估计都想实现,单sql没有类似的函数,所以实现起来比较麻烦,需要你自己写一个函数来实现。

‘玖’ 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 如何 拆分 字符串

megetgod的解法不错。
只是如果数据量小就罢了,数据量大了在SQL中处理效率不高。建议用C、C++写个小程序处理一下为好。