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})
正則可以這樣寫
拆分的話
在代碼裡面做會方便一些吧