powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проверка двух текстовых строк на наличие общих символов
8 сообщений из 8, страница 1 из 1
Проверка двух текстовых строк на наличие общих символов
    #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
Проверка двух текстовых строк на наличие общих символов
    #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
Проверка двух текстовых строк на наличие общих символов
    #40050482
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Murderface_,

напишите CLR функцию. Сравнить два массива на C#, думаю, не сложно.
...
Рейтинг: 0 / 0
Проверка двух текстовых строк на наличие общих символов
    #40050519
Murderface_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
godsql,
Точно! Спасибо! Не привык что регулярки в MS SQL через LIKE работают.
...
Рейтинг: 0 / 0
Проверка двух текстовых строк на наличие общих символов
    #40050520
Murderface_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,
К сожалению, моих знаний для этого пока недостаточно.
...
Рейтинг: 0 / 0
Проверка двух текстовых строк на наличие общих символов
    #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
Проверка двух текстовых строк на наличие общих символов
    #40050538
Murderface_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HandKot, спасибо!

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

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


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