Можем ли мы объединить, а также заменить строковые значения в SQL Server (SSMS)?

#sql #sql-server

Вопрос:

ТАБЛИЦА ИМЕН

Я выполнил приведенный ниже запрос, но получил результат в виде нулевых значений.

 SELECT CAST(REPLACE(REPLACE(REPLACE(REPLACE(FIRST_NAME,'null',''),'N/A',''),'no',''),'NA','')  ' '   REPLACE(REPLACE(REPLACE(REPLACE(LAST_NAME,'null',''),'N/A',''),'no',''),'NA','')) AS 'FULL_NAME' FROM NAMES
 

Вместо этого я хочу, чтобы мой результат был:

 FULL_NAME
___________
Ankit Kumar
Mayank Sharma
Puneet Kumar
Rajesh
Narender
Robert
Chahuhan
Jaswinder Singh
Rakesh
 

Ответ №1:

Более поздние версии SQL Server поддерживают concat_ws() :

 select concat_ws(' ', 
                 (case when first_name not in ('na', 'no', 'null') then first_name end),
                 (case when last_name not in ('na', 'no', 'null') then last_name end)
                ) as full_name
 

В более старых версиях вы можете использовать:

 select ltrim( (case when first_name not in ('na', 'no', 'null') then ' '   first_name else '' end)  
              (case when last_name not in ('na', 'no', 'null') then ' '   last_name else '' end)
            ) as full_name
             
 

Комментарии:

1. Привет,Гордон, ваш запрос сработал, спасибо за быстрый ответ.