sqlserver分割字符串
㈠ sqlserver 怎么分割字符串
如楼上给的 单独分割一部分 也可用下面的函数 分割出一个集合
--1.0拆分字符串参数@strSource要操作的字符串@strSeparator分隔符
CREATEFUNCTION[dbo].fn_splitStr(@strSourceNVARCHAR(4000),@strSeparatorNVARCHAR(10))
RETURNS@tbResultTABLE(idINTIDENTITY(1,1),rsNVARCHAR(1000))
AS
BEGIN
DECLARE@dwIndexINT,@strResultNVARCHAR(1000),@dwSeparatorLenINT=LEN(@strSeparator);
SET@dwIndex=CHARINDEX(@strSeparator,@strSource);--取得第一个分隔符的位置
WHILE@dwIndex>0
BEGIN
SET@strResult=LEFT(@strSource,@dwIndex-1);
INSERT@tbResultVALUES(@strResult);
--将要操作的字符串去除已切分部分
SET@strSource=SUBSTRING(@strSource,@dwIndex+LEN(@dwIndex),LEN(@strSource));
SET@dwIndex=CHARINDEX(@strSeparator,@strSource);--循环量增加
END
--处理最后一节
IFLEN(@strSource)>0INSERT@tbResultVALUES(@strSource)
RETURN;
END
GO
㈡ sqlserver 字符串分割
建议后台代码实现。
㈢ sqlserver 如何截取格式固定的分隔符之间的字符
我说一下用java实现,有多种方案,可以先把整个字符串用 | 究分割,再用 = 分割,取出想要的字符串,组合起来。第二种方案用正则提取出想要的字符串,再组合。例如下面是用正则全实现的:
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassDemo3{
publicstaticvoidmain(String[]args){
Strings="00080220=0000231737|00081037=0000231737|00086153=0000231811|00086160=0000231901|";
Patternpattern=Pattern.compile("=(\d+)\|");
Matchermatcher=pattern.matcher(s);
Stringresult="";
while(matcher.find()){
result+=matcher.group(1)+"|";
}
System.out.println(result);
}
}
运行结果是:
0000231737|0000231737|0000231811|0000231901|
㈣ 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
㈤ sqlserver怎么把一个表中按分号隔开的字符串分成多行放在一个临时表中呢
分割“版区负责人Id”,使其结果为
版区Id版区负责人Id
6123
6456
6789
(这里,我想来想去,只有使用零时表+游标来实现,个人没有想到更好的方法)
CREATEFUNCTION[dbo].[fun_Split]
(
@strVARCHAR(MAX),
@splitVARCHAR(10)
)
RETURNSTABLE
AS
RETURN
(SELECTB.idFROM(SELECT[value]=CONVERT(XML,'<v>'+REPLACE(@str,@split,'</v><v>')
+'</v>')
)A
OUTERAPPLY(SELECTid=N.v.value('.','varchar(100)')
FROMA.[value].nodes('/v')N(v)
)B
)
GO
--2005以及以上的版本支持这种分割写法。用xml path,把数据搞成你所要的结果
㈥ sql实现字符串分割截取,以分号做标致位。
你的数据库是什么数据库?
sqlserver?oracle?
下面这个是db2的,简单改一下sqlserver应该就能用:
http://hi..com/micro0369/item/cac396e8c99fc5e9fb42ba5e
找到一个sqlserver的:
http://blog.csdn.net/xiaoyuan402/article/details/7049473
㈦ sqlserver 按分隔符截取字符串
可以参考下面的代码:
selectsubstring('ADFASDFD(DASFADSFAS)',1,charindex('(','ADFASDFD(DASFADSFAS)')-1)
主要用到两个函数,一个charindex,这个是判断指定字符位置的函数。
另一个是substring,这个是截取字符串的函数。
(7)sqlserver分割字符串扩展阅读:
sqlserver参考函数
upper(char_expr) 转为大写
lower(char_expr) 转为小写
space(int_expr) 生成int_expr个空格
reverse(char_expr) 反转字符串
stuff(char_expr1,start,length,char_expr2) 将字符串char_expr1中的从
㈧ SQLserver用逗号隔开的数据如何改为分行
假设2016-01-01这话日期在单元格A1输入公式B1=VALUE(TEXT(YEAR(A1)&MONTH(A1)&DAY(A1),0))问题搞定纯手打,望采纳
㈨ 关于SQLserver 存储过程 如何切割一个字符串 转化为数组
Create Function [dbo].[Split](@Sql varchar(8000),@Splits varchar(10))
returns @temp Table (a varchar(100))
As
Begin
Declare @i Int
Set @Sql = RTrim(LTrim(@Sql))
Set @i = CharIndex(@Splits,@Sql)
While @i >= 1
Begin
Insert @temp Values(Left(@Sql,@i-1))
Set @Sql = SubString(@Sql,@i+1,Len(@Sql)-@i)
Set @i = CharIndex(@Splits,@Sql)
End
If @Sql <> ''
Insert @temp Values (@Sql)
Return
End
㈩ sql 如何 拆分 字符串
megetgod的解法不错。
只是如果数据量小就罢了,数据量大了在SQL中处理效率不高。建议用C、C++写个小程序处理一下为好。