Varun Sareen Ответов: 2

Преобразование строки в SQL для настройки формата


уважаемый друг,

У меня есть веревочка :-
'25/26*34+21'
и я хочу, чтобы он был преобразован в это

'[25]/[26]*[34]+[21]'
в SQL.

Любезно помогите, так как я уже много пробовал.

Что я уже пробовал:

Я попробовал использовать CharIndex, Replace, но безуспешно.

2 Ответов

Рейтинг:
1

OriginalGriff

Честно говоря, вам было бы гораздо лучше сделать это на вашем языке презентации: обработка строк SQL плохая, а поддержка регулярных выражений ... ГМ ... ужасный.

Если вы заставите его работать, он будет медленным и трудным в обслуживании, но это возможно с помощью PATINDEX и прочего, как показывает этот пример: sql server - шаблон регулярных выражений внутри функции замены SQL? - переполнение стека[^] - это не будет делать именно то, что вы ищете, но это должно дать вам общее представление и показать вам, как много работы вы получаете сами.

Серьезно, сделайте это в своем коде презентации: SQL отлично хранит и связывает информацию, но он не предназначен для тяжелых манипуляций со строками.


Varun Sareen

Я согласен с тем, что вы написали об этом, но мое требование только таково. Я не в состоянии найти решение этой проблемы. Тихое разочарование до сих пор. Спасибо за старание.

Рейтинг:
0

CHill60

Я полностью согласен с @OriginalGriff, и если кто-то скажет вам другое, они ошибаются :смейтесь:

Однако я отмечаю ваш комментарий о том, что у вас, похоже, нет выбора, поэтому вот альтернативный подход с использованием замены

declare @Test varchar(125) = '25/26*34+21+15'

select '[' + replace(replace(replace(replace(@Test, '+',']+['), '-',']-['),'*',']*['),'/',']/[') + ']'
Моменты, которые следует отметить:
- Я только использовал + , - , * и / - вам придется расширить этот принцип для любых других персонажей, которых вы хотите использовать
- Обязательно ознакомьтесь с документацией по адресу REPLACE (Transact-SQL) | Microsoft Docs[^]
- Найди то, что нужно. [ и ] добавлено в любом конце и подумайте, что произойдет, если ваша строка начинается или заканчивается любым из символов, которые вы заменяете
- Попробуйте найти способ сделать это в вашем презентационном слое


Varun Sareen

спасибо