Ack петли!Не нужно зацикливать это
Это будет работать в T-SQL ... к сожалению, у меня нет среды pl / sql, чтобы написать это. PL / SQL будет иметь эквиваленты всему, что здесь используется (я думаю, что вместоподстрока и | вместо +)
declare @name varchar(200)
set @name = 'firstword secondword'
select left(@name,(patindex('% %',@name)-1)) + ' ' + ltrim(substring(@name,(patindex('% %',@name)+1),len(@name)))
Вам придется переоборудовать ее для работы в Oracle и вам нужно заменить любую ссылку на @name на asset_y.name
select left(asset_y.name,(patindex('% %',asset_y.name)-1)) || ' ' || ltrim(substring(asset_y.name,(patindex('% %',asset_y.name)+1),len(asset_y.name)))
Извините, если он не будет работать как есть, как я уже говорил, мне не хватает здесь установки oracle для подтверждения ...
Просто для добавления ... Я обычно превращаю этот запрос выше в функцию с именем formatname ивызвать его как select formatname (array_y.name) из ... Это позволяет мне включить некоторую форму обработки ошибок.Запрос не будет выполнен, если patindex ('%%', array_v.name) вернет значение NULL ... что означает отсутствие пробела.Вы можете сделать то же самое в операторе выбора, используя случаи, которые я предполагаю:
select case when patindex('% %',array_v.name) > 0 then
left(asset_y.name,(patindex('% %',asset_y.name)-1)) || ' ' || ltrim(substring(asset_y.name,(patindex('% %',asset_y.name)+1),len(asset_y.name)))
else asset_y.name
from...