繁体   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