Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проверка двух текстовых строк на наличие общих символов / 8 сообщений из 8, страница 1 из 1
03.03.2021, 20:33
    #40050452
Murderface_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка двух текстовых строк на наличие общих символов
Добрый день! Подскажите пожалуйста как в MS SQL можно определить содержатся ли символы из одной строки в другой, желательно без использования CTE.

Ниже привожу пример запроса, реализованного на PostgreSQL. В таблице содержаться 2 строки. В столбцах a и b первой строки имеется общий символ w , а во второй строке общих символов нет. К сожалению, работаю с MS SQL совсем недавно и обнаружил, что в этой СУБД нет массивов. Первое, что пришло в голову это разделить столбец на строки по одному символу с помощью STRING_SPLIT и потом выполнить сопоставление, но не придумал как это сделать. Буду рад любой помощи.

Код: sql
1.
2.
3.
4.
5.
SELECT    *,
	  string_to_array(a, NULL) && string_to_array(b, NULL)
FROM      (VALUES
                  ('qwerty', 'asdwfghjk'),
                  ('abc', 'def')) AS foo(a, b)
...
Рейтинг: 0 / 0
03.03.2021, 21:56
    #40050479
godsql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка двух текстовых строк на наличие общих символов
Murderface_,

можно так
Код: sql
1.
2.
3.
4.
5.
6.
7.
select * from 
(SELECT    a, b --,
	  --string_to_array(a, NULL) && string_to_array(b, NULL)
FROM      (VALUES
                  ('qwerty', 'asdwfghjk'),
                  ('abc', 'def')) AS foo(a, b)) T
where a like '%['+b+']%'
...
Рейтинг: 0 / 0
03.03.2021, 22:19
    #40050482
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка двух текстовых строк на наличие общих символов
Murderface_,

напишите CLR функцию. Сравнить два массива на C#, думаю, не сложно.
...
Рейтинг: 0 / 0
04.03.2021, 07:16
    #40050519
Murderface_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка двух текстовых строк на наличие общих символов
godsql,
Точно! Спасибо! Не привык что регулярки в MS SQL через LIKE работают.
...
Рейтинг: 0 / 0
04.03.2021, 07:18
    #40050520
Murderface_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка двух текстовых строк на наличие общих символов
Владислав Колосов,
К сожалению, моих знаний для этого пока недостаточно.
...
Рейтинг: 0 / 0
04.03.2021, 08:39
    #40050533
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка двух текстовых строк на наличие общих символов
Murderface_
godsql,
Точно! Спасибо! Не привык что регулярки в MS SQL через LIKE работают.

можно так, но надо проверить по ресурсам
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT    
	a
	, b
FROM      (VALUES
                  ('qwerty', 'asdwfghjk'),
                  ('abc', 'def')) AS foo(a, b)
WHERE
	Translate(a, b, space(len(b))) <> a
...
Рейтинг: 0 / 0
04.03.2021, 09:10
    #40050538
Murderface_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка двух текстовых строк на наличие общих символов
HandKot, спасибо!

Благодарю всех за обратную связь. Все вышеописанные решения подходят для решения задачи по нахождению строк с общими символами. Но как быть если слегка изменить условие и найти все строки, где каждый символ столбца a содержится в столбце b ? В этом случае запрос должен вернуть только первую строку, т. к. столбец b содержит все символы из столбца а только в ней.

Код: sql
1.
2.
3.
4.
SELECT    *
FROM      (VALUES
                  ('qwe', 'fwlqme'),
                  ('abc', 'abd')) AS foo(a, b)
...
Рейтинг: 0 / 0
04.03.2021, 10:05
    #40050549
Murderface_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка двух текстовых строк на наличие общих символов
Murderface_,

Разобрался

Код: sql
1.
2.
3.
4.
5.
SELECT    *
FROM      (VALUES
                  ('qwe', 'fwlqme'),
                  ('abc', 'abd')) AS foo(a, b)
WHERE	  a LIKE REPLICATE('[' + b + ']', LEN(a))
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проверка двух текстовых строк на наличие общих символов / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]