powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / пробелы в содержимом строки ASE12.5.x
9 сообщений из 9, страница 1 из 1
пробелы в содержимом строки ASE12.5.x
    #34926672
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такая ситуация - я выбираю фрагменты текстов процедур из syscomments, кладу их во временную таблицу и потом анализирую.

Например мне нужно отобрать все строки кода где переменная a numeric(9).
В тексте процедуры это может быть как a numeric(9) или a numeric (9) или a numeric( 9)
Соответственно в syscomments будут храниться все эти пробелы.
(Я не рассамтриваю случаи когда фраза разрывается и записывается в следующую строку )

В коде процедуры может быть declare a numeric(12), b numeric(9)

Если использовать like '%a%numeric%(%9%' то записи типа a numeric(12), b numeric(9) тоже будут выбраны.

Кажется, что единственный способ это убрать все пробелы и потом сравнивать
как like'%anumeric(9)%'

Вопрос - как это сделать?

str_replace(поле, ' ', null) like '%a=1%' не работает. Часть нежелательных записей всё равно проходят.

Дополнительный вопрос - может ли символ перевода строки храниться в текстовом поле?
Если да, то как его отловить?

Заранее всем огромное спасибо
...
Рейтинг: 0 / 0
пробелы в содержимом строки ASE12.5.x
    #34928138
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kru пишет:
> Кажется, что единственный способ это убрать все пробелы и потом сравнивать
> как like'%anumeric(9)%'
> Вопрос - как это сделать?

Ну, можно написать хранимую процедуру, которая из строки все пробелы убирает.
Но я бы все же оставлял по одному пробелу, все же разделитель.
А то вы так 'n char(10)' от 'nchar(10)' не сможете отличить.
И еще - это было бы здорово делать регулярными выражениями.
Но ASE их не поддерживает. Может быть тогда лучше на клиенте ?

> Дополнительный вопрос - может ли символ перевода строки храниться в
> текстовом поле?
> Если да, то как его отловить?

Да, может, отловить - сравнить с char(10) или char(10) + char(13).
Но учтите, что это зависит от операционной системы.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
пробелы в содержимом строки ASE12.5.x
    #34929070
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Kru пишет:
> Кажется, что единственный способ это убрать все пробелы и потом сравнивать
> как like'%anumeric(9)%'
> Вопрос - как это сделать?

Ну, можно написать хранимую процедуру, которая из строки все пробелы убирает.
Но я бы все же оставлял по одному пробелу, все же разделитель.
А то вы так 'n char(10)' от 'nchar(10)' не сможете отличить.
И еще - это было бы здорово делать регулярными выражениями.
Но ASE их не поддерживает. Может быть тогда лучше на клиенте ?

На клиенте сделать не могу - среда не позволяет есть только DB Artisan.
Хранимка может решить проблему - если в ней отлавливать и прибивать все char(10), char(13) и потом удалять все пробелы. В моём конкретном случае нет nchar, но если бы был, то тогда, наверное нужно было бы сначала отловить все nchar, заменить их, скажем на ^nchar, потом удалить все пробелы и потом заменить ^ на пробел.

Но всётаки странно, почему в ASE нет стандартных средств для удаления пробелов.
Идеология?


MasterZiv
> Дополнительный вопрос - может ли символ перевода строки храниться в
> текстовом поле?
> Если да, то как его отловить?

Да, может, отловить - сравнить с char(10) или char(10) + char(13).
Но учтите, что это зависит от операционной системы.
Posted via ActualForum NNTP Server 1.4

Значит символы эти есть!!! и из-за них str_replace не работала.

Я пока проблему решил так - загнал все записи во временную таблицу.
Потом update table set field = str_replace(field,char(10),null), потом такой же update для char(13) и в конце для пробелов.

Вроде так работает.

Большое спасибо.
...
Рейтинг: 0 / 0
пробелы в содержимом строки ASE12.5.x
    #34929255
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если есть Артизан, то сделай экстакт процедур в файл и там уже пройдись хоть редактором, хоть программно чем-нить
...
Рейтинг: 0 / 0
пробелы в содержимом строки ASE12.5.x
    #34929476
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komradесли есть Артизан, то сделай экстакт процедур в файл и там уже пройдись хоть редактором, хоть программно чем-нить

Можно было бы пойти по этому пути - но, если честно, у меня знаний не хватает.
- я не знаю как сделать в Artisan выгрузку каждого объекта в свой файл. Возможно ли это вообще?

Если все исследуемые объекты выгружать в один файл, то его потом придётся "пилить".
У меня нет никакого прикладного софта. Теоретически можно было бы написать скрипт на shell под Linux,
но я только только начал с Linux работать и на написание и отладку даже простой вещи у меня уйдёт гораздо больше времени, чем я могу себе позволить.
Попрошу не пинать меня за это. Так сложилось, что всю свою ITшную жизнь под виндой работал.

Поэтому я предпочёл syscomments и написал процедуру которая вылавливает нужные мне объекты.

В общем-то проблему с пробелами я решил, но как-то это решение сложным мне кажется.
Казалось бы делов-то, пробелы убрать. Поэтому и спросил, может есть какие-нибудь способы, если Sybase напрямую этого не позволяет.

Не хотелось велосипед изобретать.
...
Рейтинг: 0 / 0
пробелы в содержимом строки ASE12.5.x
    #34929494
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komradесли есть Артизан, то сделай экстакт процедур в файл и там уже пройдись хоть редактором, хоть программно чем-нить

В Артизане есть поиск по базе данных, но он ищет с точностью до пробела.
Например если создать процедуру
create proc test
@num_fld numeric ( 9)
as
select @ca_id_nb

и попробовать запустить Database search для @num_fld numeric (9), то он ничего не найдёт.

Нельзя гарантировать, что в какой-то процедуре будут при декларации переменной лишние пробелы. Поэтому Артизаном придётся выгружать вообще все процедуры и потом уже вылавливать третьими средствами нужные фрагменты из этого огромного файла.
...
Рейтинг: 0 / 0
пробелы в содержимом строки ASE12.5.x
    #34929496
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Kru]Например если создать процедуру
create proc test
@num_fld numeric ( 9)
as
select @ca_id_nb
quot]

Редактор убрал мои лишние пробелы.

create proc test
@num_fld пробел пробел пробел... numeric пробел пробел ( пробел 9)
as
select @ca_id_nb
...
Рейтинг: 0 / 0
пробелы в содержимом строки ASE12.5.x
    #34929549
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KruПопрошу не пинать меня за это. Так сложилось, что всю свою ITшную жизнь под виндой работал.Во первых, это не оправдание, во вторых все что нужно есть и под виндой.
Например можно взять vbs, и на нем написать - подключаешься к базе, читаешь syscomments, получаешь резалтсет и на vbs-же разбираешь его. Для каждой очередной прочитанной строки резалтсета запускаешь регексп типа "\ba\b\s+numeric\s*\(\s*9\s*\)" если удовлетворил - записываешь эту строку в отдельный файл. Никаких временных таблиц не нужно.
...
Рейтинг: 0 / 0
пробелы в содержимом строки ASE12.5.x
    #34933622
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl KruПопрошу не пинать меня за это. Так сложилось, что всю свою ITшную жизнь под виндой работал.Во первых, это не оправдание, во вторых все что нужно есть и под виндой.
Например можно взять vbs, и на нем написать - подключаешься к базе, читаешь syscomments, получаешь резалтсет и на vbs-же разбираешь его. Для каждой очередной прочитанной строки резалтсета запускаешь регексп типа "\ba\b\s+numeric\s*\(\s*9\s*\)" если удовлетворил - записываешь эту строку в отдельный файл. Никаких временных таблиц не нужно.

Спасибо!
Я vbs никогда не пользовался. Почитаю доку, может он не хуже юниксовых скриптов будет.

Для этой конкретной задачи я всё-таки всё уже сделал на сервере БД, но подобных задач ещё много будет, так что удобный тул мне очень понадобится.

Ещё раз спасибо за идею
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / пробелы в содержимом строки ASE12.5.x
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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