Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / исключение/замена заданного множества символов из строки / 6 сообщений из 6, страница 1 из 1
16.02.2007, 08:11
    #34335364
_kvs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
исключение/замена заданного множества символов из строки
подскажите, пожалуйста,
есть ли в ASE 12.5.1 некие стандартные ф-ции для этого? (типа str_replace, но чтобы
искомая подстрока воспринималась как множество искомых символов для замены)

в мануалах не нашел, но прежде чем что-то свое начать делать, решил все-таки уточнить,
вдруг не заметил чего-то...
...
Рейтинг: 0 / 0
16.02.2007, 10:33
    #34335681
golsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
исключение/замена заданного множества символов из строки
В явном виде такой нет. Используй комбинацию функций:

STUFF(char_expr1,start,length,char_expr2), где start = PATINDEX("%pattern%",char_expr)

Единственно - надо проверять, что PATINDEX("%pattern%",char_expr) > 0
...
Рейтинг: 0 / 0
16.02.2007, 11:00
    #34335779
sn1251
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
исключение/замена заданного множества символов из строки
Угу. patindex поможет, но если нужно заменить ВСЕ вхождения - то только циклом. Или куча вложенных str_replace() для каждого символа.

Я имел опыт прикручивания Java-функции замены с помощью RegExp, но рекомендовать это не могу - работало крайне медленно и ненадёжно.
...
Рейтинг: 0 / 0
16.02.2007, 21:28
    #34337847
Zhora
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
исключение/замена заданного множества символов из строки
Цикл можно сделать с/заменить update-ом ...
...
Рейтинг: 0 / 0
01.03.2007, 15:36
    #34364038
cs
cs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
исключение/замена заданного множества символов из строки
вот этот кусок кода убивает двойные кавычки в поле.
Код: plaintext
1.
2.
3.
4.
while exists(select  1  from MyTable where FieldName like char( 37 ) + char( 34 )+ char( 37 ))
begin
  update MyTable
  set FieldName = isnull(stuff(FieldName,patindex(char( 37 ) +Char( 34 ) +char( 37 ),FieldName), 1 ,''),FieldName)
end
...
Рейтинг: 0 / 0
02.03.2007, 09:30
    #34365603
_kvs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
исключение/замена заданного множества символов из строки
да я тут на эту тему уже процедурки написал, может кому-то пригодится

create procedure RemoveChars(@s varchar(1024) out, @chars varchar(1024)) as
-- Подпрограмма исключения символов множества @chars из строки @s
declare @i int, @N int

set @N = len(@chars), @i = 1
while (@i <= @N) begin
set @s = str_replace(@s, substring(@chars, @i, 1), null)
set @i = @i + 1
end

create procedure RemoveCharsExcept(@s varchar(1024) out, @chars varchar(1024)) as
-- Подпрограмма исключения всех символов из строки @s кроме символов из @chars
declare @i int

set @i = 1
while @i <= len(@s) begin
if charindex(substring(@s, @i, 1), @chars) = 0
set @s = str_replace(@s, substring(@s, @i, 1), null)
else
set @i = @i + 1
end
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / исключение/замена заданного множества символов из строки / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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