Добавление буквы X с помощью конката или подстроки в SQL

#sql #sql-server #substring #concatenation

Вопрос:

Итак, это часть моего запроса:

 select concat('copy \librarycommonphotos',Image,'.',ImageType)
 

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

 copy \librarycommonphotos{tuesday}_1pm{tuesday}_1_ggc9070bsgdg763013a06a54b9bf54e5.png
 

Я немного запутался в том, как работает логика этого запроса, он просто добавляет тип расширения изображения в конец изображения из той же папки. Есть ли способ, чтобы я мог вставить букву A или B с изображения?

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

 copy \librarycommonphotos{tuesday}_1pmX{tuesday}_1_ggc9070bsgdg763013a06a54b9bf54e5.png
 

В любом случае, я могу использовать подстроку, чтобы добавить эту дополнительную букву впереди?

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

1. Конкат()

2. Не могли бы вы, пожалуйста, написать ответ, и я приму его?

3. Ха-ха, моего комментария на самом деле недостаточно в качестве фактического «ответа», ответ должен быть чем-то большим, чем просто ссылка на документацию 🙂 Но я подумал, что это, вероятно, все, что тебе нужно.

4. вставьте его в переднюю concat() часть Image :- select concat('copy librarycommonphotos','X',Image,'.',ImageType)

5. @Белка, ЭТО БУДЕТ ИДТИ ПЕРЕД ИЗОБРАЖЕНИЕМ, ХОТЯ

Ответ №1:

Проанализируйте Image и разделите на путь к файлу и имя файла. Затем используйте concat() для объединения в требуемую строку со X вставкой между

 select  concat('copy librarycommonphotos', ImagePath, 'X', ImageName, '.', ImageType)
from    yourtable
cross apply
(
    select  ImagePath = left(Image, p   1),
            ImageName = right(Image, len(Image) - p - 1)
    from    (
                select  p = len(Image) - charindex('', reverse(Image))
            ) p 
) p