powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Добавить в средину поля слово, не меняя при этом слова которые есть.
6 сообщений из 6, страница 1 из 1
Добавить в средину поля слово, не меняя при этом слова которые есть.
    #39921586
Добрый день. В столкнулся с проблемой: поменялся путь к файлам (добавилась папка). Пример: docs/sql/u_sql/ch15.shtml, а стала docs/sql/u_sql/NEW/ch15.shtml. Таких записей в поле очень много чтоб менять вручную .Подскажите пожалуйста как добавить в средину слова новое слово. Заранее спасибо
...
Рейтинг: 0 / 0
Добавить в средину поля слово, не меняя при этом слова которые есть.
    #39921587
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
REPLACE ( string_expression , string_pattern , string_replacement )
Аргументы
string_expression
Строковое выражение, в котором выполняется поиск. string_expression может быть символьного или двоичного типа данных.
string_pattern
Подстрока для поиска. string_pattern может быть символьного или двоичного типа данных. string_pattern не может быть пустой строкой ('') и не может превышать максимальное число байтов, которое может уместиться на странице.
string_replacement
Строка замещения.
...
Рейтинг: 0 / 0
Добавить в средину поля слово, не меняя при этом слова которые есть.
    #39921591
Massa52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатолийToll,
Код: sql
1.
2.
3.
declare @nam varchar(50) 
set @nam='docs/sql/u_sql/ch15.shtml'
select left(@nam,len(@nam) - charindex('/',reverse(@nam))) + '/NEW' + right(@nam,charindex('/',reverse(@nam)))
...
Рейтинг: 0 / 0
Добавить в средину поля слово, не меняя при этом слова которые есть.
    #39921594
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатолийToll
Добрый день. В столкнулся с проблемой: поменялся путь к файлам (добавилась папка). Пример: docs/sql/u_sql/ch15.shtml, а стала docs/sql/u_sql/NEW/ch15.shtml. Таких записей в поле очень много чтоб менять вручную .Подскажите пожалуйста как добавить в средину слова новое слово. Заранее спасибо


Самое время вспомнить о реляционной теории и второй нормальной форме.
...
Рейтинг: 0 / 0
Добавить в средину поля слово, не меняя при этом слова которые есть.
    #39921654
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АнатолийToll,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
DECLARE @t AS TABLE ([v] VARCHAR(MAX) NOT NULL)
-- Тестовые данные
INSERT INTO @t([v])
SELECT CONVERT(VARCHAR(MAX), NEWID()) UNION ALL 
SELECT CONVERT(VARCHAR(MAX), NEWID()) UNION ALL 
SELECT CONVERT(VARCHAR(MAX), NEWID()) UNION ALL 
SELECT CONVERT(VARCHAR(MAX), NEWID()) UNION ALL 
SELECT CONVERT(VARCHAR(MAX), NEWID()) UNION ALL 
SELECT CONVERT(VARCHAR(MAX), NEWID()) 

-- Решение
UPDATE @t
  SET 
      [v].WRITE('[Вставка]-'
    , 9
    , 0)
OUTPUT 
       deleted.[v] AS [Данные до изменения]
     , inserted.[v] AS [Данные после изменения];
...
Рейтинг: 0 / 0
Добавить в средину поля слово, не меняя при этом слова которые есть.
    #39921801
nullin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Massa52, кажется получится не совсем так, если '/' не встретится. Хотя автор не сформулировал условия чётко. Хотел ещё вариант где stuff() предложить, но тоже не все так просто оказалось, когда адрес пустой или состоит из одного '/', понадобился isnull() костылём.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select X.v, row_number() over(order by X.v desc) as rn
     , isnull(stuff(X.v, (len(replace(X.v, ' ', '*')) + 1) - e.v + 1, 0, 'NEW/'), X.v + 'NEW/')
     /*, replace(isnull(stuff(X.v, (len(replace(X.v, ' ', '*')) + 1) - e.v + 1, 0, 'NEW/'), X.v + 'NEW/'), ' ','*')*/ 
       /*debug spaces*/
     
     , left(X.v,len(X.v) - charindex('/',reverse(X.v))) + '/NEW' + right(X.v,charindex('/',reverse(X.v)))
       /* 0.shtml -> 0.shtml/NEW (o_O) */

  from (values (convert(nvarchar,'docs/sql/u_sql/ch15.shtml')), ('     7  '), (''), (' '), ('/'), ('/.'), ('.shtml'), ('   ')
             , ('docs/1.shtml'), ('/.shtml'), ('/2.shtml'),('0.shtml'),('0000.shtml'),('./4.shtml')) as X(v)
             
 cross apply(select charindex('/', reverse('/' + X.v)) as v) as e
 order by X.v desc


dbfiddle
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Добавить в средину поля слово, не меняя при этом слова которые есть.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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