Конкатенация в SQL-запросах. Concat sql описание


CONCAT ФУНКЦИЯ | Oracle PL/SQL •MySQL •SQL Server

Узнайте, как использовать функцию CONCAT Oracle / PLSQL с синтаксисом и примерами.

Описание

Функция Oracle / PLSQL CONCAT позволяет соединить две строки вместе.

Синтаксис

Синтаксис функции Oracle / PLSQL CONCAT:

CONCAT( string1, string2 )

Параметры или аргументы

string1 первая строка для соединенияstring2 вторая строка для соединения

Примечание

Применение

Функцию CONCAT можно использовать в следующих версиях Oracle / PLSQL:

  • Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i

Пример

Рассмотрим несколько примеров функции CONCAT и изучим, как использовать функцию CONCAT в Oracle / PLSQL.

SQL> select CONCAT('У попа', ' была собака') from dual; CONCAT('УПОПА','БЫЛАСОБАКА') ---------------------------- У попа была собака SQL> select CONCAT('a', 'b') from dual; CONCAT('A','B') --------------- ab

SQL> select CONCAT('У попа', ' была собака') from dual;

CONCAT('УПОПА','БЫЛАСОБАКА')

----------------------------

У попа была собака

 

 

SQL> select CONCAT('a', 'b') from dual;

CONCAT('A','B')

---------------

ab

Вопросы и ответы

Вопрос:

Как можно использовать функцию CONCAT для объединения более 2-х строк?

Ответ:

Поскольку функция CONCAT позволяют объединить только 2 строки, вы должны использовать вложение несколько функций CONCAT для объединения более 2 строк вместе.

Например, для объединения 3-х строк, вы могли бы вложить функцию CONCAT следующим образом:

CONCAT( CONCAT( string1, string2 ), string3 )

Или вы могли бы вложить функцию CONCAT следующим образом, если вы хотитеобъединить 4 строки:

CONCAT( CONCAT( CONCAT( string1, string2 ), string3 ), string4 )

Вот пример, который демонстрирует, вложение несколько функций Concat для объединения 6 строк:

SQL> select CONCAT( CONCAT( CONCAT( CONCAT( CONCAT( 'У попа ', 'была собака'), ' он ее любил. '), 'Она съела'),' кусок мяса '), 'он ее убил.') from dual; ---------------------------------------------------------------- У попа была собака он ее любил. Она съела кусок мяса он ее убил.

SQL> select CONCAT( CONCAT( CONCAT( CONCAT( CONCAT(

'У попа ', 'была собака'), ' он ее любил. '), 'Она съела'),' кусок мяса '),

   'он ее убил.') from dual;

----------------------------------------------------------------

У попа была собака он ее любил. Она съела кусок мяса он ее убил.

Функция CONCAT является одним из методов для объединения строк в Oracle. Альтернативой использованию функции CONCAT нужно использовать оператор | | объединения нескольких строк, а именно:

SQL> select 'У попа ' || 'была собака' || ' он ее любил. ' || 'Она съела' || ' кусок мяса ' || 'он ее убил.' from dual; ---------------------------------------------------------------- У попа была собака он ее любил. Она съела кусок мяса он ее убил.

SQL> select 'У попа ' || 'была собака' || ' он ее любил. ' || 'Она съела' || ' кусок мяса ' || 'он ее убил.' from dual;

----------------------------------------------------------------

У попа была собака он ее любил. Она съела кусок мяса он ее убил.

oracleplsql.ru

Описание и применение функции CONCAT в SQL.

Вы здесь: Главная - MySQL - SQL - Описание и применение функции CONCAT в SQL.

В некоторых SQL-запросах требуется соединение строк. Если есть возможность соединить в PHP, то прекрасно, но не всегда это целесообразно. И в этой статье мы рассмотрим такую задачу, плюс разберём функцию CONCAT в SQL.

Допустим, в нашей таблице есть поле у некоторой записи со значением: "12.53, 11.10, 32.20". И нам нужно к существующей строке добавить ещё одну. Вариант `field` = `field` + ", 15.23" не пройдёт, поскольку + работает только с числовыми типами, а вот для соединения строк в SQL используется CONCAT:

UPDATE `table` SET `field` = CONCAT(`field`, ', 15.23') WHERE `id`='1'

Вот этот запрос уже соединит текущее значение поля field с новым. Безусловно, в CONCAT() может быть не 2 параметра, а столько, сколько Вам нужно.

Таким образом, CONCAT нам помог избежать выборки текущего значения, что, разумеется, упростит понимание кода, увеличит его быстродействие и сократит его количество.

  • Создано 09.01.2013 10:13:30
  • Михаил Русаков
Предыдущая статья Следующая статья

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка: <a href="https://myrusakov.ru" target="_blank"><img src="https://myrusakov.ru//images/button.gif" alt="Как создать свой сайт" /></a>

    Она выглядит вот так:

  2. Текстовая ссылка:<a href="https://myrusakov.ru" target="_blank">Как создать свой сайт</a>

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи): [URL="https://myrusakov.ru"]Как создать свой сайт[/URL]

myrusakov.ru

Функция CONCAT - сложение строк при выборке

Функция CONCAT предназначена для сложения строк при выборке из базы данных. Строками обычно выступают поля таблиц.

См. также функцию CONCAT_WS, которая складывает строки с использованием разделителя.

См. также функцию GROUP_CONCAT, которая складывает содержимое одного поля из разных строк.

Синтаксис

SELECT CONCAT(поле1, поле2...) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id айди name имя age возраст salary зарплата
1 Дима 23 300
2 Петя 24 400
3 Вася 25 500

Пример

В данном примере при выборке из базы создается новое поле concat, в котором одновременно сольются 3 поля - age, name и salary:

SELECT *, CONCAT(age, name, salary) as concat FROM workers

SQL запрос выберет следующие строки:

id айди name имя age возраст salary зарплата concat объединенное поле
1 Дима 23 300 23Дима300
2 Петя 24 400 24Петя400
3 Вася 25 500 25Вася500

Пример

Давайте добавим после name 3 восклицательных знака:

SELECT *, CONCAT(name, '!!!') as name FROM workers

SQL запрос выберет следующие строки:

id айди name имя age возраст salary зарплата
1 Дима!!! 23 300
2 Петя!!! 24 400
3 Вася!!! 25 500

Пример

Давайте добавим перед name 3 восклицательных знака, а после него - 3 вопросительных:

SELECT *, CONCAT('!!!', name, '???') as name FROM workers

SQL запрос выберет следующие строки:

id айди name имя age возраст salary зарплата
1 !!!Дима??? 23 300
2 !!!Петя??? 24 400
3 !!!Вася??? 25 500

code.mu

Соединение строк SQL – Шванов Вадим

В процессе работы я столкнулся с необходимостью объединения строк в базе данных. Казалось бы, это достаточно тривиальная задача, но не все так просто, как кажется на первый взгляд. Давайте подробнее рассмотрим различные методы конкатенации строк в SQL и те проблемы, с которыми я столкнулся.

Оператор +

Наиболее простым методом объединения строк является использование обычного оператора +. При этом к первому аргументу будет добавлен второй. Например если мы возьмем слово «Чудо» и слово «Женщина» в результате получим строку «ЧудоЖенщина».

 

SELECT 'чудо' + 'женщина' AS Result

SELECT 'чудо' + 'женщина' AS Result

Пока все просто, но это не то, что было мне нужно. Потому что, мне было нужно объединять большое количество значений, а делать это через знак + было не удобно. Давайте рассмотрим и другие способы конкатенации.

Функция CONCAT

Данная функция позволяет объединить все параметры, передаваемые в нее в качестве аргументов. Минимальное количество параметров два. Добавлю очень важное замечание, данная функция появилась в SQL Server начиная с 2012 версии. Это, кстати, принципиально. Потому что зачастую используются старые версии сервера, и вы не сможете использовать новые возможности языка. Всегда проверяйте, поддерживает ли ваша версия SQL сервера используемые возможности. Особенно при переносе с одного сервера на другой.

Работает данная функция аналогично оператору +. Например:

SELECT CONCAT('чудо','женщина') AS Result

SELECT CONCAT('чудо','женщина') AS Result

Но этот вариант меня тоже не устраивал, потому что мне нужно было объединить результаты через запятую.

Функция CONCAT_WS

Данная функция позволяет конкатенировать строки через разделитель. Но ее основной проблемой, как и многих других, которые мы рассмотрим в дальнейшем, что она была добавлена только в версии SQL Server 2017, который пока практически нигде не используется. Первым параметром указывается разделитель, затем перечисляются параметры.

SELECT CONCAT_WS(' ', 'чудо','женщина') AS Result

SELECT CONCAT_WS(' ', 'чудо','женщина') AS Result

Так как у меня используется SQL куда более старой версии, то воспользоваться я ей благополучно не смог… Поэтому пришлось начать куда более не стандартные функции для конкатенации.

Функция STAFF

Переходим к более сложным примерам, и для начала рассмотрим предметную область. У нас есть три таблицы, это Человек, Проект и Назначение. Все достаточно просто, обычная реализация связи многие к многим человека и проекта.

Если очень упростить, то задача состояла в том, чтобы вывести через запятую все проекты назначенные на человека. Сначала я попытался воспользоваться функцией STAFF. Рассмотрим элементарный, но бесполезный пример

SELECT STUFF( (SELECT ';' + proj.Name FROM Project AS proj FOR XML PATH ('')) , 1, 1, '') AS Projects FROM Assignment AS assign

SELECT

STUFF(

(SELECT ';' + proj.Name

FROM  Project AS proj

FOR XML PATH (''))

, 1, 1, '')  AS Projects

FROM Assignment AS assign

Здесь, в подзапросе мы получаем все элементы таблицы Project, и соединяем их через точку с запятой, начиная именно с точки запятой, а затем просто удаляем первый символ (как раз не нужную точку с запятой). И выводим для каждого назначения.

Но когда я захотел сгруппировать результаты по идентификатору пользователя с помощью GROUP BY я узнал, что сделать этого не смогу, так как STAFF не является агрегирующей функцией. Поэтому пошел дальше изучать просторы интернета.

Функция STRING_AGG

Отличная функция которая полностью решила все мои проблемы. За исключением одного, она появилась в SQL Server 2017, поэтому оказалась хоть и очень хорошей, но бесполезной

SELECT assign.PersonId, STRING_AGG (proj.Name, ',') AS Projects FROM Assignment AS assign LEFT JOIN Project AS proj ON assign.ProjectId = proj.Id GROUP BY assign.PersonId

SELECT assign.PersonId,

       STRING_AGG (proj.Name, ',')  AS Projects

FROM Assignment AS assign

LEFT JOIN Project AS proj ON assign.ProjectId = proj.Id

GROUP BY assign.PersonId

Функция GROUP_CONCAT

Ну и наконец самое сладкое. Не найдя ни одной подходящей конкатенирующей агрегирующей функции, я нашел возможность с помощью кастомной агрерирующей функции. Есть проект на github orlando-colamatteo/ms-sql-server-group-concat-sqlclr, который предоставляет готовый скрипт, который добавляет новую конкатенирующую функцию GROUP_CONCAT. Посмотрим пример.

SELECT assign.PersonId, dbo.GROUP_CONCAT(proj.Name) AS Projects FROM Assignment AS assign LEFT JOIN Project AS proj ON assign.ProjectId = proj.Id GROUP BY assign.PersonId

SELECT assign.PersonId,

       dbo.GROUP_CONCAT(proj.Name) AS Projects

FROM Assignment AS assign

LEFT JOIN Project AS proj ON assign.ProjectId = proj.Id

GROUP BY assign.PersonId

Именно благодаря этой функции я решил все свои проблемы и выполнил поставленную задачу. Моя огромная благодарность ее создателю. Ну а теперь давайте рассмотрим процесс установки и что это вообще такое.

Установка GROUP_CONCAT в MS SQL Server

Для начала заходим на github и скачиваем проект. Распаковываем его в любую директорию. Заходим в папку D:\ms-sql-server-group-concat-sqlclr-master\GroupConcat\Installation Scripts и открываем файл GroupConcatInstallation.sql. Он уже практически готов к использованию. Единственно что нужно сделать, это изменить имя базы данных на используемое у вас.

-- !! MODIFY TO SUIT YOUR TEST ENVIRONMENT !! USE GroupConcatTest /*МЕНЯТЬ ЗДЕСЬ!*/

-- !! MODIFY TO SUIT YOUR TEST ENVIRONMENT !!

USE GroupConcatTest /*МЕНЯТЬ ЗДЕСЬ!*/

Обратите внимание, что для выполнения вам потребуются права администратора на SQL Server. После этого вы сможете использовать данную агрегатную функцию в пределах базы данных. MS SQL Management Studio может подчеркивать функцию как ошибку, но не пугайтесь, он будет успешно работать.

Что такое SQL CLR?

SQL CLR это технология компании Microsoft, которая позволяет добавлять новый функционал в MS SQL Server 2005 и более поздних версий при помощи внедрения сборок написанных с помощью языков входящих в .NET, такие как VB.NET или C#.

С ее помощью предоставляется возможность создания пользовательских функций, типов данных, аргегатных функций, триггеров, хранимых процедур, написанных на высокопроизводительных языках. Благодаря этому можно значительно увеличить производительность, а также расширять функционал стандартного SQL. Пример можно изучить в статье на Habr.

Заключение

На этом у меня все. Надеюсь данный материал будет полезен. Но больше всего меня поражает то, что компания Microsoft ввела агрегирующую функцию конкатенации строк только в 2017 году…

P.S. Присоединяйся в любой удобной для тебя социальной сети. Для меня очень важно оставаться с тобой на связи, ведь у меня есть еще много полезной информации о программировании для тебя, которой я хочу с тобой поделиться.

Поделиться ссылкой:

Понравилось это:

Нравится Загрузка...

Похожее

shwanoff.ru

SQL Server конкатенация с символом +

В этом учебном пособии вы узнаете, как использовать конкатенацию с символом + в SQL Server (Transact-SQL) с синтаксисом и примерами.

Описание

В SQL Server (Transact-SQL) конкатенация с символом + позволяет объединить две или более строки вместе.

Синтаксис

Синтаксис конкатенации с символом + в SQL Server (Transact-SQL):

string1 + string2 + string_n

Параметры или аргументы

string1 — первая строка для конкатенации.string2 — вторая строка для конкатенации.string_n — n-я строка для конкатенации.

Примечание

См. Также функцию CONCAT.

Применение

Конкатенация с символом + может использоваться в следующих версиях SQL Server (Transact-SQL):SQL Server vNext, SQL Server 2016, SQL Server 2015, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, SQL Server 2005

Пример

Рассмотрим некоторые примеры SQL Server конкатенации с символом+, чтобы понять, как использовать функцию Concat с символом + в SQL Server (Transact-SQL). Например:

SELECT 'SQL' + 'Server'; --Результат: 'SQLServer' SELECT 'S' + 'Q' + 'L' + 'Server'; --Результат: 'SQLServer' SELECT 'SQL ' + 'Server'; --Результат: 'SQL Server'

SELECT 'SQL' + 'Server';

--Результат: 'SQLServer'

 

SELECT 'S' + 'Q' + 'L' + 'Server';

--Результат: 'SQLServer'

 

SELECT 'SQL ' + 'Server';

--Результат: 'SQL Server'

Конкатенация с символом пробел

Когда вы соединяете значения строк, вы можете добавить символ пробела для разделения ваших объединяемых значений. В противном случае вы можете получить длинную строку с объединенными значениями, без разделителя. Это затрудняет чтение результатов.

Давайте посмотрим на простой пример.Мы можем конкатенировать символ пробела с помощью +.Например:

SELECT 'Peter' + ' ' + ' Pan'; --Результат: 'Peter Pan'

SELECT 'Peter' + ' ' + ' Pan';

--Результат: 'Peter Pan'

Объединение с символом ковычки

Так как оператор + будет конкатенировать строковые значения, заключенные в одинарные кавычки, то не следует добавлять символ одинарной кавычки в результате конкатенированной строки.Давайте рассмотрим довольно простой пример, который показывает, как добавить одну кавычку к полученной строке с помощью оператора+.Например:

SELECT 'It''s'+' my life!'; --Результат: It's my life!

SELECT 'It''s'+' my life!';

--Результат: It's my life!

Поскольку наши строковые значения заключены в одинарные кавычки, мы используем две дополнительные одинарные кавычки в окружающих кавычках, чтобы представить одинарную кавычку в полученной конкатенированной строке.

Если вы хотите выделить одну кавычку из других строковых значений, вы также можете переписать этот запрос следующим образом:

SELECT 'It'+''''+'s'+' my life!'; --Результат: It's my life!

SELECT 'It'+''''+'s'+' my life!';

--Результат: It's my life!

oracleplsql.ru

Конкатенация в SQL-запросах

Виды конкатенации

Определение 1

Конкатенацией называется операция, которая позволяет соединить несколько текстовых строк в одну.

В работе с базами данных конкатенация используется, когда нужно соединить значения нескольких полей или присоединить к значениям полей текст.

В SQL используется три вида конкатенации:

  • Простая конкатенация;
  • Конкатенация с разделителем;
  • Групповая конктенация.

В различных "диалектах" языка SQL функции, реализующие конкатенацию, несколько различаются своим синтаксисом. Но принципы их работы одинаковы. Эти принципы будут рассмотрены на примере функций СУБД MySQL.

Простая конкатенация

Простая конкатенация в СУБД MySQL выполняется с помощью встроенной функции CONCAT() имеющей следующий синтаксис:

CONCAT(строка1, строка2, ……строкаN)

Строки, являющиеся аргументами функции, могут быть именами полей, а могут быть текстовыми строками в кавычках.

Пример 1

В качестве примера рассмотрим запрос:

SELECT concat("Абитуриент ", fio, " возрастом ", age, " рекомендован(a) к зачислению") as text1 FROM abiturient;

Результатом запроса будет собранный из кусочков текст:

Конкатенация с разделителем

Этот вид конкатенации в MySQL выполняется с помощью функции CONCAT_WS(), имеющей следующий синтаксис:

CONCAT_WS(‘символ_разделитель’, строка1, строка2…)

В этом случае между соединяемыми строками будет установлен символ-разделитель.

Пример 2

Например, в данном запросе в качестве разделителя используется запятая:

SELECT concat_ws(',', fio,age,gender) as text1 FROM abiturient;

Результат:

Если в качестве разделителя использовать пустую строку, то результат будет полностью совпадать с результатом простой конкатенации. Если разделителем должен быть символ кавычки ', то его нужно экранировать обратным слешем – '\''.

Пример 3

SELECT concat_ws('\'', fio,age,gender) as text1 FROM abiturient;

Групповая конкатенация

Пусть даны две таблицы. В одной хранятся личные данные абитурентов, а в другой – поданные заявления. Считается, что каждый абитуриент может подать несколько заявлений на разные специальности. Тогда, чтобы увидеть список абитуриентов и список специальностей, на которые они подали заявления, нужно построить следующий запрос:

SELECT abiturient.idabiturient, abiturient.fio, application.namespec FROM abiturient JOIN application ON abiturient.idabiturient=application.idabiturient;

Результат запроса будет таким:

Теперь усложним задачу. Пусть необходимо собрать специальности по каждому абитуриенту в группу и записать их через запятую. То есть в результате должна получиться такая таблица:

Записанные через запятую названия специальностей, относящиеся к данному абитуриенту, - это и есть результат групповой конкатенации.

Для выполнения групповой конкатенации в MySQL используется инструкция GROUP BY и функция GROUP_CONCAT ().

GROUP_CONCAT([DISTINCT] строка1, строка2,.. [ORDER BY имя_поля или выражение [ASC | DESC]] [SEPARATOR 'символ_разделитель'])

Необязательная инструкция DISTINCT позволяет удалить из списка совпадающие строки. Инструкция ORDER BY позволяет упорядочить строки по какому-либо полю или выражению. Упорядочивание по возрастанию определяется инструкцией ASC, по убыванию –DESC. Инструкция SEPARATOR позволяет задать символ, который будет разделять строки. По умолчанию разделителем является запятая.

Все запросы с групповой конкатенацией являются запросами группового типа. Функция GROUP_CONCAT() может быть отнесена к групповым операциям наряду с COUNT(), SUM(),MIN(),MAX(), AVG().

Пример 4

Таким образом, для получения списка специальностей по каждому абитуриенту нужно выполнить следующий запрос:

SELECT abiturient.idabiturient, abiturient.fio, group_concat(application.namespec ORDER BY namespec separator ', ') as spec FROM abiturient JOIN application ON abiturient.idabiturient=application.idabiturient GROUP BY abiturient.idabiturient;

spravochnick.ru

sql - CONCAT_WS() для SQL Server

Я делаю это с FOR XML PATH.

Вы можете использовать союз (UNION ALL) вместо VALUES; это добавочное значение, которое оно по-прежнему работает на SQL Server 2005 (мы все равно должны его поддерживать в нашей компании), и вы можете удалить значения NULL.

DECLARE @in_SearchTerm1 nvarchar(100) DECLARE @in_SearchTerm2 nvarchar(100) DECLARE @in_SearchTerm3 nvarchar(100) DECLARE @in_SearchTerm4 nvarchar(100) SET @in_SearchTerm1 = N'a' SET @in_SearchTerm2 = N'' SET @in_SearchTerm3 = N'c' SET @in_SearchTerm4 = N'' SELECT COALESCE ( STUFF ( ( SELECT ' / ' + RPT_SearchTerm AS [text()] FROM ( SELECT NULLIF(@in_SearchTerm1, N'') AS RPT_SearchTerm, 1 AS RPT_Sort UNION ALL SELECT NULLIF(@in_SearchTerm2, N'') AS RPT_SearchTerm, 2 AS RPT_Sort UNION ALL SELECT NULLIF(@in_SearchTerm3, N'') AS RPT_SearchTerm, 3 AS RPT_Sort UNION ALL SELECT NULLIF(@in_SearchTerm4, N'') AS RPT_SearchTerm, 4 AS RPT_Sort ) AS tempT WHERE RPT_SearchTerm IS NOT NULL ORDER BY RPT_Sort FOR XML PATH(N''), TYPE ).value('.', 'nvarchar(MAX)') ,1 ,3 ,N'' ) ,N'' ) AS RPT_SearchTerms

Обратите внимание на использование nvarchar - остановить использование varchar.

Вы также должны заказать его, чтобы сохранить последовательность.

Итак, что это делает:

Цель: Возьмите 4 поисковых запроса, введенных в 4 отдельных фильтрах в отчете.

Отобразите эти 4 условия поиска в отчете, объединенном ' / '.

Не должно быть ' / / ', если поисковый запрос пуст.

Он должен отображаться последовательно, то есть term1/term2/term3/term4, а не, например, term4/term2/term3/term1.

Как сделать: Таким образом, вы берете 4 поисковых термина в объединение и добавляете значение сортировки для сохранения порядка.

Вы выбираете условия поиска и разделитель из объединения (separatur + null = null)

SELECT ' / ' + RPT_SearchTerm FROM (UNION OF SEARCH TEMRS) AS tempT

Закажите его RPT_Sort

Теперь выберите все значения (разделитель + текст) в tempT в один файл XML (FOR XML), где все значения представляют собой XML-элементы с пустым тэгом (PATH(N'')) и выбирают значения XML-текста ( AS [text()]) (aka element.innerXML).

получить результат этого как XML-элемент (TYPE) и извлечь строку innerText этого XML-элемента (.value('.', 'nvarchar(MAX)')) (например, XML-декодирование).

Наконец, удалите ведущий '/' (STUFF(var, 1,3, N''))

Это в принципе точно так же, как

CONCAT_WS(' / ', @in_SearchTerm1, @in_SearchTerm2, @in_SearchTerm3, @in_SearchTerm4)

Теперь добавьте nullif,

CONCAT_WS(' / ', NULLIF(@in_SearchTerm1, '') , NULLIF(@in_SearchTerm2, ''), NULLIF(@in_SearchTerm3, ''), NULLIF(@in_SearchTerm4, ''))

и ты там.

Вот как вы все еще можете делать CONCAT_WS в SQL-Server...

qaru.site