powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вырезать часть строки с вариативной серединкой
5 сообщений из 5, страница 1 из 1
Вырезать часть строки с вариативной серединкой
    #40086493
Alexzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
MS SQL Server 2017.
Из строки надо вырезать часть строки с вариативной серединкой (количество процентов). Какие могут быть варианты?
Имеем, например, следующую строку 'какое-то начало вырезаем 55% из этой строки кокой-то конец'
Т.е. надо вырезать строку в которой число 55 может быть произвольным 'вырезаем 55% из этой строки' и в результате получить строку 'какое-то начало кокой-то конец'.
...
Рейтинг: 0 / 0
Вырезать часть строки с вариативной серединкой
    #40086494
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Ну... предполагаем, что '%' там один.
2. Ищем позицию %
3. Ищем позицию предшествующего пробела.
4. Херачим staff.
Bingo!
...
Рейтинг: 0 / 0
Вырезать часть строки с вариативной серединкой
    #40086538
Alexzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222, спасибо!
Такое намутил))
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
declare
   @s1 varchar(1024) = 'вырезаем '
  ,@s2 varchar(1024) = '% из этой строки'

select
  replace( stuff( t.Notes
                 ,charindex(@s2, t.Notes) - charindex(reverse(@s1), reverse(substring(t.Notes, 1, charindex(@s2, t.Notes) - 2)))
                 ,charindex(reverse(@s1), reverse(substring(t.Notes, 1, charindex(@s2, t.Notes) - 2)))
                 ,''
                )
          ,@s1 + @s2
          ,''
         )
from (select 'какое-то начало вырезаем 55% из этой строки кокой-то конец' as Notes
      union all 
      select 'тест вырезаем 33.11% из этой строки конец теста' as Notes) as t
...
Рейтинг: 0 / 0
Вырезать часть строки с вариативной серединкой
    #40086973
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexzzy
aleks222, спасибо!
Такое намутил))
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
declare
   @s1 varchar(1024) = 'вырезаем '
  ,@s2 varchar(1024) = '% из этой строки'

select
  replace( stuff( t.Notes
                 ,charindex(@s2, t.Notes) - charindex(reverse(@s1), reverse(substring(t.Notes, 1, charindex(@s2, t.Notes) - 2)))
                 ,charindex(reverse(@s1), reverse(substring(t.Notes, 1, charindex(@s2, t.Notes) - 2)))
                 ,''
                )
          ,@s1 + @s2
          ,''
         )
from (select 'какое-то начало вырезаем 55% из этой строки кокой-то конец' as Notes
      union all 
      select 'тест вырезаем 33.11% из этой строки конец теста' as Notes) as t



Плохо. Надо с reverse-нутой строкой работать. Сэкономишь на reverse.
...
Рейтинг: 0 / 0
Вырезать часть строки с вариативной серединкой
    #40087038
Alexzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222, ну да, лучше.
Это разовый скрипт, и так сойдет)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вырезать часть строки с вариативной серединкой
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]