當前位置:首頁 » 編程語言 » sqlserver字元串分割

sqlserver字元串分割

發布時間: 2023-05-18 23:33:54

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實現字元串分割截取,以分號做標致位。

你的資料庫是什麼資料庫?
sqlserver?oracle?

下面這個是db2的,簡單改一下sqlserver應該就能用:
http://hi..com/micro0369/item/cac396e8c99fc5e9fb42ba5e

找到一個sqlserver的:
http://blog.csdn.net/xiaoyuan402/article/details/7049473

⑷ 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

⑸ 在SQL Server資料庫中拆分字元串函數

SQL Server資料庫中拆分字元串函數的具體方法

CREATE FUNCTION uf_StrSplit (@origStr varchar( ) 待拆分的字元串@markStr varchar( )) 拆分標記 如 RETURNS @splittable table( str_id varchar( ) NOT NULL 編號ID string varchar( ) NOT NULL 拆分後的字元串)ASBEGINdeclare @strlen int @postion int @start int @sublen int @TEMPstr varchar( ) @TEMPid intSELECT @strlen=LEN(@origStr) @start= @sublen= @postion= @TEMPstr= @TEMPid= if(RIGHT(@origStr )<>@markStr )beginset @origStr = @origStr + @markStrendWHILE((@postion<=@strlen) and (@postion != ))BEGINIF(CHARINDEX(@markStr @origStr @postion)!= )BEGINSET @sublen=CHARINDEX(@markStr @origStr @postion) @postion;ENDELSEBEGINSET @sublen=@strlen @postion+ ;ENDIF(@postion<=@strlen)BEGINSET @TEMPid=@TEMPid+ ;SET @TEMPstr=SUBSTRING(@origStr @postion @sublen);INSERT INTO @splittable(str_id string)values(@TEMPid @TEMPstr)IF(CHARINDEX(@markStr @origStr @postion)!= )BEGINSET @postion=CHARINDEX(@markStr @origStr @postion)+ ENDELSEBEGINSET @postion=@postion+ ENDENDENDRETURNEND

例如 select * from uf_StrSplit( )

輸出結果

lishixin/Article/program/SQLServer/201311/22421

⑹ sqlserver拆分字元串用的是什麼函數

SQL Server中自定義函數:友好則用指定的分隔符號分襪尺割字好棚符串
http://www.cnblogs.com/SavionZhang/p/4094459.html

⑺ SQLServer根據指定字元串拆分字元到臨時表函數

Create function [dbo].[split]

(

@SourceSql varchar(max),

@StrSeprate varchar(10)

)

returns @temp table(line varchar(max))

as

begin

declare @i int

set @SourceSql = rtrim(ltrim(@SourceSql))

set @i = charindex(@StrSeprate,@SourceSql)

while @i >= 1

begin

if len(left(@SourceSql,@i-1))>0

begin

insert @temp values(left(@SourceSql,@i-1))

end

set @SourceSql=substring(@SourceSql,@i+len(@StrSeprate),len(@SourceSql)-@i)

set @i=charindex(@StrSeprate,@SourceSql)

end

if @SourceSql > ''

insert @temp values(@SourceSql)

return

end

調用:Select * From dbo.split('1003,1004,1005',',')
結果如下:
100310041005

----------------------------------------------------------------------------------------------------------------------------------

--@column 表示欄位或者常量,@paddingChar 表示 補位字元, @len 補位數量, @returnStr

create function [dbo].[PadLeft](@column varchar(16),@paddingChar char(1),@len int)

returns varchar(16) as

begin

declare @returnStr varchar(16)

select @returnStr = isnull(replicate(@paddingChar,@len - len(isnull(@column ,0))), '') + @column

return @returnStr

end

select dbo.PadLeft(2,0,5)

⑻ sqlserver怎麼把一個表中按分號隔開的字元串分成多行放在一個臨時表中呢

  1. 分割「版區負責人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以及以上的版本支持這種分割寫法。
  2. 用xml path,把數據搞成你所要的結果

⑼ sqlserver 字元截取、查找

返回字元串在表達式expression里第一次出現的位置,起始值從1開始算,沒找就納慶返回0
描述一下此函數的具體用法:

'%pattern%' 的用法類似於 like '%pattern%' 的用法,也就是模糊查找其pattern字元串是否是expression找到,找到並返回其第一次出現的位置。

查找pattern的結束所在expression的位置,也就是從後面匹配起查找。

查詢pattern首次出現的位置。

返回0,開頭找不到就返回碼液0,後面無論有多少都不管。

這就相當於精確匹配查找,也就是pattern,expression完全相等。

[] 是指遲茄物定某些特殊的字元。

[^] 除[]之外的字元串。

⑽ 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|

熱點內容
怎麼把伺服器變成普通電腦 發布:2025-07-15 14:39:45 瀏覽:957
甘肅天水首選伺服器地址雲主機 發布:2025-07-15 14:34:32 瀏覽:715
我的世界java版好玩的外國伺服器網址 發布:2025-07-15 14:20:17 瀏覽:110
電腦的外存儲器 發布:2025-07-15 14:19:42 瀏覽:526
淘淘源碼 發布:2025-07-15 14:12:07 瀏覽:881
自己的主機可以搭建伺服器嗎 發布:2025-07-15 14:09:58 瀏覽:775
atilinux 發布:2025-07-15 14:01:42 瀏覽:822
硬碟緩存越大越好 發布:2025-07-15 13:53:22 瀏覽:387
蘋果六怎麼設置密碼鎖 發布:2025-07-15 13:43:28 瀏覽:33
世界上最強的電腦伺服器 發布:2025-07-15 13:41:13 瀏覽:401