[英]SQL query, extracting words/ information from a column of Data
Is there a sql code that takes text from after the first arrow, but stops at a second?是否有一个 sql 代码从第一个箭头之后获取文本,但在下一秒停止? (if applicable). (如果适用)。 Using dbms PostgreSQL.使用 dbms PostgreSQL。
eg extracting the information in bold例如提取粗体信息
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
You can use the split_part()
function to get that element:您可以使用split_part()
函数来获取该元素:
select split_part(the_column, '-->', 2)
from your_table;
SQLFiddle example:http://sqlfiddle.com/#!15/9eecb7db59d16c80417c72d1e1f4fbf1/7123 SQLFiddle 示例:http ://sqlfiddle.com/#!15/9eecb7db59d16c80417c72d1e1f4fbf1/7123
You can use some split function with delimiter '-->', below is a split function I use in t-sql:您可以使用一些带有分隔符“-->”的拆分函数,下面是我在 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
You should specify the index which in your case is 1您应该指定在您的情况下为 1 的索引
SELECT SPLIT(myField,'-->',1) FROM myTable
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.