Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
пробелы в содержимом строки ASE12.5.x
|
|||
|---|---|---|---|
|
#18+
Такая ситуация - я выбираю фрагменты текстов процедур из 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%' не работает. Часть нежелательных записей всё равно проходят. Дополнительный вопрос - может ли символ перевода строки храниться в текстовом поле? Если да, то как его отловить? Заранее всем огромное спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 01:04 |
|
||
|
пробелы в содержимом строки ASE12.5.x
|
|||
|---|---|---|---|
|
#18+
Kru пишет: > Кажется, что единственный способ это убрать все пробелы и потом сравнивать > как like'%anumeric(9)%' > Вопрос - как это сделать? Ну, можно написать хранимую процедуру, которая из строки все пробелы убирает. Но я бы все же оставлял по одному пробелу, все же разделитель. А то вы так 'n char(10)' от 'nchar(10)' не сможете отличить. И еще - это было бы здорово делать регулярными выражениями. Но ASE их не поддерживает. Может быть тогда лучше на клиенте ? > Дополнительный вопрос - может ли символ перевода строки храниться в > текстовом поле? > Если да, то как его отловить? Да, может, отловить - сравнить с char(10) или char(10) + char(13). Но учтите, что это зависит от операционной системы. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 13:47 |
|
||
|
пробелы в содержимом строки ASE12.5.x
|
|||
|---|---|---|---|
|
#18+
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) и в конце для пробелов. Вроде так работает. Большое спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 17:13 |
|
||
|
пробелы в содержимом строки ASE12.5.x
|
|||
|---|---|---|---|
|
#18+
если есть Артизан, то сделай экстакт процедур в файл и там уже пройдись хоть редактором, хоть программно чем-нить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 18:10 |
|
||
|
пробелы в содержимом строки ASE12.5.x
|
|||
|---|---|---|---|
|
#18+
komradесли есть Артизан, то сделай экстакт процедур в файл и там уже пройдись хоть редактором, хоть программно чем-нить Можно было бы пойти по этому пути - но, если честно, у меня знаний не хватает. - я не знаю как сделать в Artisan выгрузку каждого объекта в свой файл. Возможно ли это вообще? Если все исследуемые объекты выгружать в один файл, то его потом придётся "пилить". У меня нет никакого прикладного софта. Теоретически можно было бы написать скрипт на shell под Linux, но я только только начал с Linux работать и на написание и отладку даже простой вещи у меня уйдёт гораздо больше времени, чем я могу себе позволить. Попрошу не пинать меня за это. Так сложилось, что всю свою ITшную жизнь под виндой работал. Поэтому я предпочёл syscomments и написал процедуру которая вылавливает нужные мне объекты. В общем-то проблему с пробелами я решил, но как-то это решение сложным мне кажется. Казалось бы делов-то, пробелы убрать. Поэтому и спросил, может есть какие-нибудь способы, если Sybase напрямую этого не позволяет. Не хотелось велосипед изобретать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 20:25 |
|
||
|
пробелы в содержимом строки ASE12.5.x
|
|||
|---|---|---|---|
|
#18+
komradесли есть Артизан, то сделай экстакт процедур в файл и там уже пройдись хоть редактором, хоть программно чем-нить В Артизане есть поиск по базе данных, но он ищет с точностью до пробела. Например если создать процедуру create proc test @num_fld numeric ( 9) as select @ca_id_nb и попробовать запустить Database search для @num_fld numeric (9), то он ничего не найдёт. Нельзя гарантировать, что в какой-то процедуре будут при декларации переменной лишние пробелы. Поэтому Артизаном придётся выгружать вообще все процедуры и потом уже вылавливать третьими средствами нужные фрагменты из этого огромного файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 20:41 |
|
||
|
пробелы в содержимом строки ASE12.5.x
|
|||
|---|---|---|---|
|
#18+
[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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 20:43 |
|
||
|
пробелы в содержимом строки ASE12.5.x
|
|||
|---|---|---|---|
|
#18+
KruПопрошу не пинать меня за это. Так сложилось, что всю свою ITшную жизнь под виндой работал.Во первых, это не оправдание, во вторых все что нужно есть и под виндой. Например можно взять vbs, и на нем написать - подключаешься к базе, читаешь syscomments, получаешь резалтсет и на vbs-же разбираешь его. Для каждой очередной прочитанной строки резалтсета запускаешь регексп типа "\ba\b\s+numeric\s*\(\s*9\s*\)" если удовлетворил - записываешь эту строку в отдельный файл. Никаких временных таблиц не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 22:16 |
|
||
|
пробелы в содержимом строки ASE12.5.x
|
|||
|---|---|---|---|
|
#18+
White Owl KruПопрошу не пинать меня за это. Так сложилось, что всю свою ITшную жизнь под виндой работал.Во первых, это не оправдание, во вторых все что нужно есть и под виндой. Например можно взять vbs, и на нем написать - подключаешься к базе, читаешь syscomments, получаешь резалтсет и на vbs-же разбираешь его. Для каждой очередной прочитанной строки резалтсета запускаешь регексп типа "\ba\b\s+numeric\s*\(\s*9\s*\)" если удовлетворил - записываешь эту строку в отдельный файл. Никаких временных таблиц не нужно. Спасибо! Я vbs никогда не пользовался. Почитаю доку, может он не хуже юниксовых скриптов будет. Для этой конкретной задачи я всё-таки всё уже сделал на сервере БД, но подобных задач ещё много будет, так что удобный тул мне очень понадобится. Ещё раз спасибо за идею ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2007, 19:42 |
|
||
|
|

start [/forum/topic.php?fid=55&fpage=57&tid=2011821]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 390ms |

| 0 / 0 |
