SQL заменяет запятую в результатах без использования replace

Я чувствую, что это должно быть достаточно просто сделать, но не нашли никаких решений, которые не использовали replace до сих пор. У меня есть следующая инструкция select, которую я запускаю, и для некоторых столбцов есть запятые, разделяющие значения. Я хотел бы заменить эти запятые точкой с запятой, однако я хочу сделать это только в инструкции select. Я не хочу, чтобы он изменял значения в таблицах вообще. Это не одно утверждение, или я бы просто заменил все запятые точка с запятой, а затем вернуться назад.

SELECT a.Category_Id, a.Category_Name, ISNULL(b.Category_Alias, '') as Category_Alias, 
ISNULL(b.SUPPORT_NAMES, '') as SUPPORT_NAMES
FROM Categories a
    INNER JOIN CategoryInfo b on b.Category_Id=a.Category_Id

для столбца Category_Alias записи фактически хранятся как CS, Customer Support и я хочу, чтобы это показать как CS; Customer Support только для оператора select.

3 ответов


Я считаю, что вы можете быть смущены тем, что делает функция REPLACE. Вы можете использовать REPLACE в своем операторе SELECT без изменения данных в базе данных:

SELECT REPLACE(MyField, ',', ';') AS NewFieldName
FROM MyTable

Я считаю, что вы не хотите физически заменять значение в таблице, но ok на заменить на select

вы можете

Select REPLACE(ColumnName,',',';') 
From TableName

большинство SQL-серверов реализуют встроенную функцию замены. Большинство из них имеют имя replace(), а также могут использоваться в инструкции select. Пример из MySQL:

SELECT field, REPLACE(field,',',';') FROM my_table;