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

sql以逗号截取字符串

发布时间: 2022-11-18 04:04:26

sql 以逗号为间隔截取字符

declare @sql varchar(5000),@totalLength int,@length int,@tag varchar(20),@currentNumber int

set @sql=',google,yahoo,my,db,sqlserver,helloworld,'
set @tag=','
set @totalLength=len(@sql)

set @length=charindex(@tag,@sql)
print '第1条记录: '+left(@sql,@length-1)
set @sql=substring(@sql,@length+1,@totalLength)
set @currentNumber=1
while (@length>0)
begin
set @currentNumber=@currentNumber+1
set @length=charindex(@tag,@sql)
if(@length=0)
begin
break;
end
print '第'+ltrim(str(@currentNumber))+'条记录:'+left(@sql,@length-1)
set @sql=substring(@sql,@length+1,@totalLength)
end

第1条记录:
第2条记录:google
第3条记录:yahoo
第4条记录:my
第5条记录:db
第6条记录:sqlserver
第7条记录:helloworld

㈡ sql server中,怎样查询字段把逗号分割的字符串拆分成多条数据

sql server中没有这种函数,可以自建一个function去拆分,
给你个思路,
用charindex 或是instr等函数,在循环体中查找分隔符出现的位置和并记录出现次数到变量,然后使用substring函数截取字符串,输出

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

可以使用substring_index(column, ',', 2)方法来实现。

具体SQL语句为:

select id,name,substring_index(address, ',', 2) from people;

substring_index(address, ',', 2)的意思是截取第二个 ',' 之前的所有字符。


(3)sql以逗号截取字符串扩展阅读

sql中substring()的相关用法介绍:

1、SUBSTRING(name,3) 截取name这个字段 从第三个字符开始,之后的所有个字符

SELECT SUBSTRING('1234567',3)

结果:34567

2、SUBSTRING(name, -4) 截取name这个字段的第 4 个字符位置(倒数)开始取,直到结束

SELECT SUBSTRING('1234567',-4)

结果:4567

3、SUBSTRING(name, -4,2) 截取name这个字段的第 4 个字符位置(倒数)开始取,只截取之后的2个字符

SELECT SUBSTRING('1234567',-4,2)

结果:45

4、substring_index('www..com', '.', 2) 截取第二个 '.' 之前的所有字符

SELECT substring_index('www..com', '.', 2)

㈣ sql server里如何将一组用逗号分隔的字符串分解并插入到另一张表中,比如:11873,27827, 也可能是好多

1.得到这个字符串。如:111,222,333
2.得到带","字符串的长度。如:11
3.用replace把","去掉,得到长度。如:9
4.到这步,我们就知道,这个字符串有2个逗号,也就是说,有3个有效数据。
5.用while,substring开始循环得到数据,然后插入到表中
如:
set count=0
while(coung<3)--我们已经知道就3个有效数据
begin
set value=substring()---截取到第一个”,“,得到第一个有效数据
执行insert语句。
end

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

sql字段有逗号隔开,数据取值的方法。

如下参考:

1.查询数据库表的所有字段,直接使用select语句,如下图。

㈥ 简单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中怎么把字符串根据逗号拆分

IF(OBJECT_ID('TA') IS NOT NULL) DROP TABLE TA
CREATE TABLE TA(id INT,[value] VARCHAR(100), class VARCHAR(10))
INSERT INTO TA(id,[value],class)
SELECT 1,'3,2,4,5','no' UNION ALL
SELECT 2,'5,1,1+2','yes'
--查询结果
SELECT T.id
,SUBSTRING(T.[value],R.number,CHARINDEX(',',T.[value]+',',R.number)-R.number) AS value
,T.class
,ROW_NUMBER() OVER (PARTITION BY T.id ORDER BY T.id) AS code
FROM TA AS T
JOIN (
SELECT TOP 10 number FROM [master].dbo.spt_values
WHERE [type]='P' ORDER BY number)AS R ON (CHARINDEX(',',','+T.[value],R.number)=R.number)

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

我没看懂你的意思但是我有一样个批量删除的比如
/*
使用存储过程实现如下功能,批量删除实际选中的多个反馈活动。
*/
--包规范
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 如何以逗号为分隔符分割一个字段的值

可用substring函数。

创建测试表及数据:

createtabletest
(idvarchar(10));

insertintotestvalues('123abc');
insertintotestvalues('456def');
insertintotestvalues('789ghi');

执行:

selectsubstring(id,1,3)+','+substring(id,4,3)asidfromtest

结果截图:

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