ibatis中sql.xml怎么分割字符串并循环

create table #a (string varchar(max))

sql server中没有这种函数,可以自建一个function去拆分,

sql字符串切割 sql字段切割sql字符串切割 sql字段切割


sql字符串切割 sql字段切割


给你select @a ='asdf qwer zxcv 1234 qwer yuchor 3452 qwer abcd 7893'--这个是要查询的字符串个思路,

用charindex 或是instr等函数,在循环体中查找分隔符出现的位置和并记录出现次数到变量,然后使用substring函数截取字符串,输出

sql 如何把字符串拆分插入

select [name] from [t2] where charindex(','+[id]+',',','+(select [nameid] from [t1] where [qq]=123)+',')>0;

参考下这个,主要是用逗号的数目进行循环,利用connect by ll:

delete

select id,nvl(substr(name,instr(name,',',1,lvl)+1,instr(name,',',1,lvl+1)-instr(name,',',1,lvl)-1),'kong') name,

t1.type,t1.app

from

from zz_t1 a ,

(select ll lvl from dual connect by ll<=

(select max(length(name)-length(replace(name,',')))+1 from zz_t1)) b

) t1

order by id,name;

在SQL中怎么把一列字符串拆分为多列,请高手赐教

insert into #a values (@a)

--首先,你是select @count = @count + 1按什么规则拆? 我举个例子 你要按字段中的逗号拆开,设字段名叫text

sql语句如何将一个字符串拆分重组

int,@r2

declare @str varchar(20)

name

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 @str1 = @str1 + substring (@str,@count,1) + '.'

end

print @str1

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

sql 截取字符串

declare @t varchar(1000)

set @t= N'

肖恩·宾 丹尼·戴尔 肖· 鲍勃·霍斯金斯 '

while (CHARINDEX('<',@t)> 0)

b--查询结果egiright(n

set @t = STUFF(@t,charindex('<',@t),charindex('>',@t) - charindex('<',@t) +1,'')

end

print @t

结果:肖恩·宾 丹尼·戴尔 肖· 鲍勃·霍斯金斯

SQL 语句 将一个表中用特殊字符分割的字段转换成多行数据

截取的"48-Z952"的"-"的索引+第1个索引的长度

不知道你是什么数据库,如果是Mysql,可以这样(定含有qq字段的表为t1,另一张表为t2):

select `name` from `t2` where find_in_set(`id`, (select `nameid` from `t1` where `qq`=123));

如果是SQL,则这样:

select [name] from [t2] where instr(',' & (select [nameid] from [t1] where [qq]=123) & ',',',' & [id] @s='默认风格|#007168|23|紫色风格|#E8D6FE|21|蓝色风格|#bad2fe|22'& ',')>0;

sql 查询按指定的字符串个数分割字符串 比如123456789 按3个字符串分割 输出结果如下 123 456 789

由于你这种插入数据的方式我没用过,因此保留意见

SELECT SUBSTRING('123456789',1,3zxcv) +' '+SUBSTRING('123456789',4,3) +' '+SUBSTRING('123456789',6,3)

sql 语句 怎么将多个分号字符串拆分成多条数据

@s0='默认风格'

sql server中没有这种函数,可以自建一个function去拆分,

like

给你个思路,

用charindex 或是instr等函数,在循环体中查找分隔符出现的位置和并记录出现次数到变量,然后使用substring函数截取字符串,输出

sql截取字符串!

(select id,lvl,','||name||',' name,type,app

declare

@s

nvarchar(200),@s0

nvarchar(20),@s1

nvarchar(200),@s2

nvarchar(200)

再查出你要的数据set

set

declare

@r1

int

if

substring(@s,len(@s),1)<>'|'

set

@s=@s+'|'

set

@r1=charindex(@s0,@s)

--文字开始位置

select

@s1=substring(@s,@r1+len(@s0)+1,len(@s))

--文字+“|”以后的子串

set

--子串中个“|”相对于原串的起始位置

set

@s2=substring(@s1,charindex('|',@s1)+1,len(@s1))

set

@r2=@r2+charindex('|',@s2)

print

substring(@s,1,@r1-1)+substring(@s,@r2+1,len(@s))

你可以把@s0改成任意的什么“风格”。

把这段代码修改一下,可以作成一个函数,把@s0和@s作为参数,的print作为返回值。

如果单单只是完成以上所说

from

db

where

'%紫色风格|#E8D6FE|21%'

不就行了?

如果是想替换成空.则用

update

db

set

=replace(name,'紫色风格|#E8D6FE|21','')

sql 字符串拆分

您好,您可以参考下面的程序:

select left(col1,charindex('(',col1)-1) col1,

where substr(name,instr(name,',',1,lvl)+1,instr(name,',',1,lvl+1)-instr(name,',',1,lvl)-1) is not null

substring(col1,charindex('(',col1),len(col1)) col2

from tbl1

看看结果对么