簡體   English   中英

SQL查詢,從一列數據中提取詞/信息

[英]SQL query, extracting words/ information from a column of Data

是否有一個 sql 代碼從第一個箭頭之后獲取文本,但在下一秒停止? (如果適用)。 使用 dbms PostgreSQL。

例如提取粗體信息

Cat --> Dog 
Park Bench --> Window / Door / House 
Test --> OBJECT 
Train Journey --> Coat -->  ha 64,10 cm (19 Woll)
Elaborate --> All-in-One 
HUH --> Scarf --> Yellow 122
HUH --> Scarf --> Yellow 123
HUH --> Scarf --> Yellow 124
HUH --> Scarf --> Yellow 125
HUH --> Scarf 
Branches --> Wood / Leaf 
Branches --> Scarf 
Branches --> Car 
Two way --> Drawers -->  ha 33,02 cm (13 Woll)
Ordinary --> Table 
Two way --> Drawers -->  ha 49,18 cm (17 Woll)
Two way --> 5-in-2 / Lewisham
Two way --> Drawers -->   ha 33,02 cm (13 Woll)
Ordinary --> London --> Scarf
Ordinary --> ThinHouse 
Window / Door / House --> Hotel --> House - Park
Two way--> London --> Scarf
Two way--> London 
HUH --> Bowl --> Spoon 123
HUH --> Hand --> Stage
Production --> Able --> Now
Window / Door --> Always --> Now
Window / Door --> London 
Window / Door --> Longevity --> Sonstige
Ordinary --> London 
HUH --> HUH Window / Door 
Window / Door --> Longevity -->  ha 45,72 cm (18 Woll)
Ordinary --> London --> Scarf

您可以使用split_part()函數來獲取該元素:

select split_part(the_column, '-->', 2)
from your_table;

SQLFiddle 示例:http ://sqlfiddle.com/#!15/9eecb7db59d16c80417c72d1e1f4fbf1/7123

您可以使用一些帶有分隔符“-->”的拆分函數,下面是我在 t-sql 中使用的拆分函數:

CREATE FUNCTION [dbo].[Split]
(
    @Text VARCHAR(MAX),
    @Delimiter VARCHAR(100),
    @Index INT
)
RETURNS VARCHAR(MAX)
AS BEGIN
    DECLARE @A TABLE (ID INT IDENTITY, V VARCHAR(MAX));
    DECLARE @R VARCHAR(MAX);
    WITH CTE AS
    (
    SELECT 0 A, 1 B
    UNION ALL
    SELECT B, CONVERT(INT,CHARINDEX(@Delimiter, @Text, B) + LEN(@Delimiter))
    FROM CTE
    WHERE B > A
    )
    INSERT @A(V)
    SELECT SUBSTRING(@Text,A,CASE WHEN B > LEN(@Delimiter) THEN B-A-LEN(@Delimiter) ELSE LEN(@Text) - A + 1 END) VALUE      
    FROM CTE WHERE A >0

    SELECT      @R
    =           V
    FROM        @A
    WHERE       ID = @Index + 1
    RETURN      @R
END
GO

您應該指定在您的情況下為 1 的索引

SELECT SPLIT(myField,'-->',1) FROM myTable

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM