Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 22.04.2019
Сообщений: 13

Редактирование строки

16.02.2023, 06:51. Показов 490. Ответов 5

Студворк — интернет-сервис помощи студентам
Доброго времени суток, нужна помощь.
Есть код который записывает и разделяет данные, а так же выкидывает ненужное. Но работает не до конца правильно
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
ALTER FUNCTION [dbo].[fnSplitString] ( @SOURCE VARCHAR(MAX), @delimiter VARCHAR(1))
RETURNS
 @returnList TABLE (item VARCHAR (MAX), ind INT)
AS
BEGIN
 
 DECLARE @name NVARCHAR(255)
 DECLARE @pos INT
 DECLARE @INDEX INT = 0
 
 WHILE CHARINDEX(@delimiter, @SOURCE) > 0
 BEGIN
  SELECT @pos  = CHARINDEX(@delimiter, @SOURCE)  
  SELECT @name = SUBSTRING(@SOURCE, 1, @pos-1)
  SELECT @name = LEFT(@name, CHARINDEX('/', @name)+8)
 
  INSERT INTO @returnList 
  SELECT @name,@INDEX
 
  SELECT @SOURCE = SUBSTRING(@SOURCE, @pos+1, LEN(@SOURCE)-@pos)
 
  SET @INDEX=@INDEX+1
 END
 
 INSERT INTO @returnList
 SELECT @SOURCE,@INDEX
 
 RETURN
END
 
SELECT * FROM fnSplitString
('2634/098 2020  заказ
5876/125 2019 1234566
78964/102 2021 god god
568964/019 2018 торт', '
')

И после выполнения на выходе получаем
2634/098 2020
5876/125 2019
78964/102 2021
568964/019 2018 торт

Как сделать так чтобы и в последней строчке тоже было как верхеие
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.02.2023, 06:51
Ответы с готовыми решениями:

БД с операциями: добавление новой строки, удаление строки, редактирование имеющейся строки
Нужно создать базу данных в паскале, с операциями: добавление новой строки, удаление строки, редактирование имеющей строки. Желательно с...

Редактирование строки
имеется txt файл, строк на 500-2000(+-) мне нужно расшифровать каждую строку с текстом(под спойлером алгоритм расшифровки) private...

Редактирование строки
Если есть большой текст, и в нем есть слово Backspace-это означет, что предедюший символ должен быть удален. Как зделать так что бы...

5
1305 / 359 / 98
Регистрация: 14.10.2022
Сообщений: 1,101
16.02.2023, 10:24
Лучший ответ Сообщение было отмечено Hecate2 как решение

Решение

Ох уж эти мне процедурники.
Гнать их в оракул поганой метлой! :-)))
... там всё равно по-другому не умеют...

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Declare @s nvarchar(max) =N'2634/098 2020  заказ
5876/125 2019 1234566
78964/102 2021 god god
568964/019 2018 торт'
 
Set @s =  N'head ' + @s
 
;With s as (
Select 
     Trim(Replace(Replace(Replace(left(@s, patindex('%/[0-9][0-9][0-9][ ]20[1-2][0-9]%', @s) + 8), CHAR(10), ' '), CHAR(13), ' '), CHAR(9), ' ')) [s1]
    ,Trim(Replace(Replace(Replace(Stuff(@s, 1, len(left(@s, patindex('%/[0-9][0-9][0-9][ ]20[1-2][0-9]%', @s) + 8)), ''), CHAR(10), ' '), CHAR(13), ' '), CHAR(9), ' ')) [s2]
Union all
Select Trim(left(ss.s2, patindex('%/[0-9][0-9][0-9][ ]20[1-2][0-9]%', ss.s2) + 8)) [s1]
     , Trim(Stuff(ss.s2, 1, len(left(ss.s2, patindex('%/[0-9][0-9][0-9][ ]20[1-2][0-9]%', ss.s2) + 8)), '')) [s2]
    from s ss
Where len(ss.s2)>7
)
Select Stuff(s1, 1, PATINDEX('%[ ][0-9]%/[0-9]%[ ][2]%', s1), '')
from s
0
0 / 0 / 0
Регистрация: 22.04.2019
Сообщений: 13
16.02.2023, 14:45  [ТС]
Если бы не требование преподавателя чтобы все было в проце, а бд ms sql. То с радостью бы и писал на оракле
0
0 / 0 / 0
Регистрация: 22.04.2019
Сообщений: 13
17.02.2023, 06:39  [ТС]
Цитата Сообщение от uaggster Посмотреть сообщение
Ох уж эти мне процедурники.
Гнать их в оракул поганой метлой! :-)))
... там всё равно по-другому не умеют...

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Declare @s nvarchar(max) =N'2634/098 2020  заказ
5876/125 2019 1234566
78964/102 2021 god god
568964/019 2018 торт'
 
Set @s =  N'head ' + @s
 
;With s as (
Select 
     Trim(Replace(Replace(Replace(left(@s, patindex('%/[0-9][0-9][0-9][ ]20[1-2][0-9]%', @s) + 8), CHAR(10), ' '), CHAR(13), ' '), CHAR(9), ' ')) [s1]
    ,Trim(Replace(Replace(Replace(Stuff(@s, 1, len(left(@s, patindex('%/[0-9][0-9][0-9][ ]20[1-2][0-9]%', @s) + 8)), ''), CHAR(10), ' '), CHAR(13), ' '), CHAR(9), ' ')) [s2]
Union all
Select Trim(left(ss.s2, patindex('%/[0-9][0-9][0-9][ ]20[1-2][0-9]%', ss.s2) + 8)) [s1]
     , Trim(Stuff(ss.s2, 1, len(left(ss.s2, patindex('%/[0-9][0-9][0-9][ ]20[1-2][0-9]%', ss.s2) + 8)), '')) [s2]
    from s ss
Where len(ss.s2)>7
)
Select Stuff(s1, 1, PATINDEX('%[ ][0-9]%/[0-9]%[ ][2]%', s1), '')
from s
Все конечно хорошо, но trim только для sql 2017. А на данном оборудовании стоит sql 2016. Что даёт не возможным использование данной функции.
0
1305 / 359 / 98
Регистрация: 14.10.2022
Сообщений: 1,101
17.02.2023, 07:13
Цитата Сообщение от Hecate2 Посмотреть сообщение
Все конечно хорошо, но trim только для sql 2017. А на данном оборудовании стоит sql 2016. Что даёт не возможным использование данной функции.
Trim заменяется на Ltrim(RTrim())
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
17.02.2023, 09:23
T-SQL
1
2
3
4
5
6
7
8
9
10
11
Declare @s nvarchar(max) =N'2634/098 2020  заказ
5876/125 2019 1234566
78964/102 2021 god god
568964/019 2018 торт'
 
select
 ltrim(rtrim(reverse(substring(d.v, patindex('% [0123456789]%', d.v) + 1, 1000000))))
from (select cast(cast(''as xml).query('sql:variable("@s")') as varchar(max))) a(s)
cross apply (select cast('<row>' + replace(a.s, char(10), '</row><row>') + '</row>' as xml)) b(x)
cross apply b.x.nodes('/row') c(r)
cross apply (select reverse(c.r.value('.', 'varchar(100)'))) d(v);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.02.2023, 09:23
Помогаю со студенческими работами здесь

Редактирование строки
Программа выполняет редактирования введенного пользователем строки двумя способами. Первый способ позволяет удалить лишние пробелы и...

Редактирование строки
Нужно редактировать текстовый файл таким образом: у нас есть определенное кол-во символов,которое может быть в строке(можно определить...

Редактирование строки в C++
Не могу понять как правильно добавить символ в конец строки ,вот часть кода , в чем проблема? cin &gt;&gt; st1; s = st1; ...

Редактирование строки в БД
В БД имеется 2 столбца: X и Y Как с помощью запроса к БД на php определить, в какой строке столбец X=определенному значению, и переписать...

Редактирование строки
Здравствуйте, ребят. Не буду вас мучить сегодня. Только один вопрос: У меня есть очень длинная строка std::string. Мне нужна возможность...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru