powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Народ! Выручайте! Поиск не помог
16 сообщений из 16, страница 1 из 1
Народ! Выручайте! Поиск не помог
    #33018537
Vadimmm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как в сайбэйзовом запросе заменить в поле символ один на другой? К примеру надо заменить в поле все двойные ковычки на одинарные. Голову сломал. В мссиквеле для этого функция replace, а в сайбэйзе нет:(
...
Рейтинг: 0 / 0
Народ! Выручайте! Поиск не помог
    #33018571
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VadimmmКак в сайбэйзовом запросе заменить в поле символ один на другой? К примеру надо заменить в поле все двойные ковычки на одинарные. Голову сломал. В мссиквеле для этого функция replace, а в сайбэйзе нет:(

В Sybase ASA есть REPLACE и на моей памяти (с anywhere 5.0 начиная) всегда была.

Сюда
...
Рейтинг: 0 / 0
Народ! Выручайте! Поиск не помог
    #33018573
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гoлдун пишет:

> В Sybase ASA есть REPLACE и на моей памяти (с anywhere 5.0 начиная)
> всегда была.

Обманул. REPLACE появилась в ASA 7
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Народ! Выручайте! Поиск не помог
    #33018579
Litus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
заменяем запятые на точки
update #f
set nalogsum = stuff(nalogsum,charindex(',',nalogsum),1,'.')
where charindex(',',nalogsum)>0
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Народ! Выручайте! Поиск не помог
    #33018594
Vadimmm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Litusзаменяем запятые на точки
update #f
set nalogsum = stuff(nalogsum,charindex(',',nalogsum),1,'.')
where charindex(',',nalogsum)>0
Posted via ActualForum NNTP Server 1.1
Это замена одной запятой за один проход:( а надо убрать ВСЕ двойные ковычки, не зависимо от того, сколько их в строке.
...
Рейтинг: 0 / 0
Народ! Выручайте! Поиск не помог
    #33018597
Vadimmm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр Гoлдун
Александр Гoлдун пишет:

> В Sybase ASA есть REPLACE и на моей памяти (с anywhere 5.0 начиная)
> всегда была.

Обманул. REPLACE появилась в ASA 7
Posted via ActualForum NNTP Server 1.1

Извиняюсь. ASE 12.5
...
Рейтинг: 0 / 0
Народ! Выручайте! Поиск не помог
    #33018653
Litus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
:-) Друг, ты сначала попробуй!
эта замена ВСЕХ запятых за один проход

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Народ! Выручайте! Поиск не помог
    #33018669
Litus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
:-( хм... и правда одной! давно это было :-((((
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Народ! Выручайте! Поиск не помог
    #33018683
Litus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тады надо что нибудь типа:
update #f
set nalogsum = stuff(nalogsum,charindex(',',nalogsum),1,'.')
where charindex(',',nalogsum)>0
while @@rowcount <> 0
update #f
set nalogsum = stuff(nalogsum,charindex(',',nalogsum),1,'.')
where charindex(',',nalogsum)>0
end

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Народ! Выручайте! Поиск не помог
    #33018695
Vadimmm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Litusтады надо что нибудь типа:
update #f
set nalogsum = stuff(nalogsum,charindex(',',nalogsum),1,'.')
where charindex(',',nalogsum)>0
while @@rowcount <> 0
update #f
set nalogsum = stuff(nalogsum,charindex(',',nalogsum),1,'.')
where charindex(',',nalogsum)>0
end

Posted via ActualForum NNTP Server 1.1

Это ближе, спасибо. Правда думаю тормозить будет. У меня порядка 50-ти полей и во всех надо сделать замену
...
Рейтинг: 0 / 0
Народ! Выручайте! Поиск не помог
    #33018732
Litus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
число полей - ерунда! Вот записей сколько - это критичней.
думаю, что если меньше 50 тыщ, то это со свистом прокатит
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Народ! Выручайте! Поиск не помог
    #33018742
DrNull
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вылить BCP_ями табличку, заменить, залить обратно.
Можно сделать все оптом - имеет смысл для 50 полей :)
...
Рейтинг: 0 / 0
Народ! Выручайте! Поиск не помог
    #33018822
DrNull
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, покопался - нашел:
Код: plaintext
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.
create procedure RReplace
  @inSrcStr          varchar( 255 )       ,           
  @inSearchStr      varchar( 255 )       ,           
  @inReplStr     varchar( 255 )       ,           
  @OutStr varchar( 255 ) OUTPUT

as

begin
  declare
    @ReplacePos           INT      ,                
    @TmpStr            varchar( 255 ),                
    @TmpSearchStr      varchar( 255 ),                
    @TmpReplaceStr     varchar( 255 ),                
    @TmpOutStr varchar( 255 )                 


  select @TmpStr  = @inSrcStr
  select @TmpSearchStr  = @inSearchStr
  select @TmpReplaceStr = @inReplStr
  select @ReplacePos = patindex('%'+@TmpSearchStr+'%', @inSrcStr)

  if (@ReplacePos >  0  )
  begin
    select @TmpOutStr = ''
    while @ReplacePos >  0                        
    begin                                          
      select @TmpOutStr = @TmpOutStr + substring(@TmpStr,  1 , @ReplacePos- 1 ) + @locReplaceStr
      select @TmpStr = substring(@TmpStr, @ReplacePos+char_length(@TmpSearchStr), char_length(@TmpStr))
      select @ReplacePos = patindex('%'+@TmpSearchStr+'%', @TmpStr)
    end
    select @OutStr = @TmpOutStr + @TmpStr 
  end
  else
    select @OutStr = @TmpStr 
end
Курсорчик по табличке - вставка во временную и назад...
Можно даже без времянки обойтись...
...
Рейтинг: 0 / 0
Народ! Выручайте! Поиск не помог
    #33018859
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гм - у меня сейчас сотрудница на эту замысловатую проблему из серии моего рассказа "Как плохо, когда не хватает очевидных вещей" изрекла дельную мысль - "А кто мешает им в ASA нужную табличку как прокси подрубить, сделать там UPDATE ... SET ... = REPLICACE() и одним махом все выполнить ?". Кстати по моему вариант легкий получается, хотя конечно в данном случае это разовое решение.
...
Рейтинг: 0 / 0
Народ! Выручайте! Поиск не помог
    #33018875
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начиная с 12.5.0.3 можно так :

Код: plaintext
1.
2.
3.
4.
5.
6.
-- NB ! only for @@version >= 12.5.0.3
declare @s varchar( 10000 )
select @s = 'asdf"ghjkl"qwerty"zxcvb"102938'
select @s as 'before'
select @s = str_replace( @s, '"', '''' )
select @s as 'after'
...
Рейтинг: 0 / 0
Народ! Выручайте! Поиск не помог
    #33020393
Vadimmm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо. Помог способ Litus. Правда немного упростил. Первый апдейт не делал, т.к. там же всеравно инсерт перед этим в темповую таблицу, и @@rowcount установится инсертом:)
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Народ! Выручайте! Поиск не помог
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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