sqlserver拆分字符串
‘壹’ 关于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
‘贰’ 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,把数据搞成你所要的结果
‘叁’ sqlserver总如何进行截取字符串然后再计算
max在sqlserver中可以对任何字段进行比较最大值,如果是字符型的话就是字符,数字,字母,文字,字符的具体顺序的话没有了解过,数字过0-9,字母a-z,文字要看有多少个字,然后按第一个字的开头文字排序,如果第一个有重的然后再按第二个,以此类推,例字段中有 * a z 林 夏那他的最大值为夏
另外,站长团上有产品团购,便宜有保证
‘肆’ 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 按分隔符截取字符串
可以参考下面的代码:
selectsubstring('ADFASDFD(DASFADSFAS)',1,charindex('(','ADFASDFD(DASFADSFAS)')-1)
主要用到两个函数,一个charindex,这个是判断指定字符位置的函数。
另一个是substring,这个是截取字符串的函数。
(5)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中的从
‘陆’ sql 如何 拆分 字符串
megetgod的解法不错。
只是如果数据量小就罢了,数据量大了在SQL中处理效率不高。建议用C、C++写个小程序处理一下为好。
‘柒’ sqlserver 字符串截取
可以,如果字段中的内容跟你提到的很相似或者类似可以用下面的查询语句:
select substr(字段名称,0,5) from 表明 ,如果数据库中的字段内容跟这个不像类似或者不一样,这个就需要写存储过程进行,在存储过程中添加IF判断。
‘捌’ 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 中如何按分隔符检索字符串
你可以把这个列首位各加个逗号,然后找“,8,”然后再用charindex应该就能解决你的问题了
selectcharindex(','+'8'+',',','+'18,8,7'+',')
‘拾’ sqlserver拆分长字段。正则表达式
([\s\S]*?)(\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2})
正则可以这样写
拆分的话
在代码里面做会方便一些吧