久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

SQL Server 2014 中的函數(shù) STRING_SPLIT

Function STRING_SPLIT in SQL Server 2014(SQL Server 2014 中的函數(shù) STRING_SPLIT)
本文介紹了SQL Server 2014 中的函數(shù) STRING_SPLIT的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

我開始使用 T-SQL 分析日志.我有一個(gè)問題無法解決.

I started analyze logs with T-SQL. I have one problem i can't deal with it.

示例消息:

LogsID = "1" Value="1" Value="2" Value="3"

所以當(dāng)我知道我有多少價(jià)值時(shí),我沒有問題,例如:

So I don't have problem with split this when I know how much I have Value, for example :

我使用代碼部分的代碼來分割這些數(shù)據(jù),如下所示:

I use code from code section to split this data like below :

LogsID  Value
---------------    
   1      1

代碼:

DECLARE @String VARCHAR(1024);

SET @String = 'LogsID = "1" Value="1" Value="2" Value="3"'

SELECT 
    SUBSTRING(@String, 
              CHARINDEX('Logs_ID="', @String) + 11, 
              CHARINDEX('Value="', @String) - (CHARINDEX('Logs_ID="', @String) + 13))

但是當(dāng)我不知道日志字符串中有多少值"條目時(shí),我不知道如何處理如下日志:

But I don't know how deal with logs like below when I don't know how many "value" entries are in the log string:

LogsID = "1" Value="1" Value="2" Value="3"

我想像這樣拆分這些信息:

I want split this information like that :

LogsID  Value
------------    
   1    1
   1    2
   1    3

推薦答案

使用拆分函數(shù)(在 SQL Server 2016 之前有很多方法可以做到這一點(diǎn),這里是一種):

With a split function (there are many ways to do this prior to SQL Server 2016, here is one):

CREATE FUNCTION [dbo].[SplitString]
(
    @List NVARCHAR(MAX),
    @Delim VARCHAR(255)
)
RETURNS TABLE
AS
    RETURN ( SELECT [Value] FROM 
      ( 
        SELECT 
          [Value] = LTRIM(RTRIM(SUBSTRING(@List, [Number],
          CHARINDEX(@Delim, @List + @Delim, [Number]) - [Number])))
        FROM (SELECT Number = ROW_NUMBER() OVER (ORDER BY name)
          FROM sys.all_objects) AS x
          WHERE Number <= LEN(@List)
          AND SUBSTRING(@Delim + @List, [Number], LEN(@Delim)) = @Delim
      ) AS y
    );

查詢變得比一堆 charindex 等和未知端點(diǎn)更簡單:

The query becomes simpler than a bunch of charindex etc. and an unknown endpoint:

DECLARE @String VARCHAR(1024) = 'LogsID = "1" Value="1" Value="2" Value="3"';

;WITH x AS
(
  SELECT value, p = PARSENAME(value,1) 
  FROM dbo.SplitString(@String, 'Value=')
),
l AS
(
  SELECT LogsID = PARSENAME(LTRIM(SUBSTRING(value,CHARINDEX('=',value)+1,255)),1) 
  FROM x WHERE p IS NULL
)
SELECT l.LogsID,y.p FROM l
CROSS JOIN (SELECT p FROM x WHERE p IS NOT NULL) AS y;

這篇關(guān)于SQL Server 2014 中的函數(shù) STRING_SPLIT的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Converting Every Child Tags in to a Single Column with multiple Delimiters -SQL Server (3)(將每個(gè)子標(biāo)記轉(zhuǎn)換為具有多個(gè)分隔符的單列-SQL Server (3))
How can I create a view from more than one table?(如何從多個(gè)表創(chuàng)建視圖?)
Create calculated value based on calculated value inside previous row(根據(jù)前一行內(nèi)的計(jì)算值創(chuàng)建計(jì)算值)
How do I stack the first two columns of a table into a single column, but also pair third column with the first column only?(如何將表格的前兩列堆疊成一列,但也僅將第三列與第一列配對(duì)?) - IT屋-程序員軟件開發(fā)技
Recursive t-sql query(遞歸 t-sql 查詢)
Convert Month Name to Date / Month Number (Combinations of Questions amp; Answers)(將月份名稱轉(zhuǎn)換為日期/月份編號(hào)(問題和答案的組合))
主站蜘蛛池模板: 日韩欧美天堂 | 这里只有精品99re | 久久久xxx | 一级毛片网| 91色在线视频 | 日韩精品在线播放 | 欧美二区三区 | 欧美一区二 | 亚洲一区二区三区四区五区中文 | 亚洲小视频 | 黄网站在线播放 | 精品美女视频在免费观看 | 精品一区二区久久 | 成人欧美日韩一区二区三区 | 亚洲精品综合 | jlzzxxxx18hd护士| 国产成人在线视频免费观看 | 欧美一级免费看 | 免费在线一区二区三区 | 成人在线观看免费视频 | 欧美日韩国产精品 | 日韩一区二区在线视频 | 久久99视频 | 黄色高清视频 | www.99热这里只有精品 | 久久久久久久久久性 | 精品视频一区二区 | wwwsihu | 久久久久久成人 | 亚洲97 | 毛片网站免费观看 | 福利片一区二区 | 99av成人精品国语自产拍 | 8x国产精品视频一区二区 | 亚洲婷婷一区 | 国产xxxx在线 | 成人黄色三级毛片 | 亚洲在线免费 | 国产免费一区 | 国产精品网址 | 国产99热 |