LINUX.ORG.RU

История изменений

Исправление Toxo2, (текущая версия) :

SELECT
	 y.s
	,max(y.rn)
FROM (
	SELECT 
		 a.*
		,ROW_NUMBER() OVER(PARTITION BY lower(st)) AS rn
	FROM 
		UNNEST(ARRAY[
			'Sun, moon, earth and Sun.More sun'
			,'Mars,jupyter,neptun'
			,'Saturn,Uran,Saturn'
		]) a(s)
		CROSS JOIN
			regexp_split_to_table(a.s, '[^\w]+') st
) y
WHERE
	y.rn > 1
GROUP BY 1
;

типа того, возможно

выхлоп:

|s                                |max|
|---------------------------------|---|
|Saturn,Uran,Saturn               |2  |
|Sun, moon, earth and Sun.More sun|3  |

ну, или если есть известный разделитель для определения «подстрок» - тогда по нему split.

Исправление Toxo2, :

SELECT
	 y.s
	,max(y.rn)
FROM (
	SELECT 
		 a.*
		,ROW_NUMBER() OVER(PARTITION BY lower(st)) AS rn
	FROM 
		UNNEST(ARRAY[
			'Sun, moon, earth and Sun.More sun'
			,'Mars,jupyter,neptun'
			,'Saturn,Uran,Saturn'
		]) a(s)
		CROSS JOIN
			regexp_split_to_table(a.s, '[^\w]+') st
) y
WHERE
	y.rn > 1
GROUP BY 1
;

типа того, возможно

выхлоп:

|s                                |max|
|---------------------------------|---|
|Saturn,Uran,Saturn               |2  |
|Sun, moon, earth and Sun.More sun|3  |

ну или есть известный разделитель для определения «подстрок» - тогда по нему split.

Исправление Toxo2, :

SELECT
	 y.s
	,max(y.rn)
FROM (
	SELECT 
		 a.*
		,ROW_NUMBER() OVER(PARTITION BY lower(st)) AS rn
	FROM 
		UNNEST(ARRAY[
			'Sun, moon, earth and Sun.More sun'
			,'Mars,jupyter,neptun'
			,'Saturn,Uran,Saturn'
		]) a(s)
		CROSS JOIN
			regexp_split_to_table(a.s, '[^\w]+') st
) y
WHERE
	y.rn > 1
GROUP BY 1
;

типа того, возможно

выхлоп:

|s                                |max|
|---------------------------------|---|
|Saturn,Uran,Saturn               |2  |
|Sun, moon, earth and Sun.More sun|3  |

Исправление Toxo2, :

SELECT
	 y.s
	,max(y.rn)
FROM (
	SELECT 
		 a.*
		,ROW_NUMBER() OVER(PARTITION BY lower(st)) AS rn
	FROM 
		UNNEST(ARRAY[
			'Sun, moon, earth and Sun.More sun'
			,'Mars,jupyter,neptun'
			,'Saturn,Uran,Saturn'
		]) a(s)
		LEFT JOIN
			regexp_split_to_table(a.s, '[^\w]') st ON length(st) > 0
) y
WHERE
	y.rn > 1
GROUP BY 1
;

типа того, возможно

выхлоп:

|s                                |max|
|---------------------------------|---|
|Saturn,Uran,Saturn               |2  |
|Sun, moon, earth and Sun.More sun|3  |

Исходная версия Toxo2, :

SELECT
	 y.s
	,max(y.rn)
FROM (
	SELECT 
		 a.*
		,ROW_NUMBER() OVER(PARTITION BY lower(st)) AS rn
	FROM 
		UNNEST(ARRAY[
			'Sun, moon, earth and Sun.More sun'
			,'Mars,jupyter,neptun'
			,'Saturn,Uran,Saturn'
		]) a(s)
		LEFT JOIN
			regexp_split_to_table(a.s, '[^\w]') st ON length(st) > 0
) y
WHERE
	y.rn > 1
GROUP BY 1
;

типа того, возможно