Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Замена символов в строке!
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток всем! Хотел бы обратиться к вам за помощью! Вопрос достатолчно интересный! ase -11. Есть назначение платежа в лоадере, в нём корявые юзера ставят всякий отстой, который к сожалению не всегда выдерживает Sybase (изначально данные хранятся на sql - серваке). Конкретный вопрос заключается в том, как грамотно сделать поиск и замену корявых символов на пробелы, причём корявые символы могут всречаться неоднократно! Более конкретный вопрос - как написать конкретную процедурку по замене символов asci(char1) = 160 на asci (char2) = 20 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 11:15 |
|
||
|
Замена символов в строке!
|
|||
|---|---|---|---|
|
#18+
Как-как - взять и написать. В 11 еще нет функции замены подстроки (string-replace кажется), поэтому замену надо производить путем присвоения выражения, в котором вместо ненужного символа вставляется что-то еще , типа так : Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 11:54 |
|
||
|
Замена символов в строке!
|
|||
|---|---|---|---|
|
#18+
А если в данной строке несолько раз встречается данный символ? Основной вопрос заключался в этом!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 13:38 |
|
||
|
Замена символов в строке!
|
|||
|---|---|---|---|
|
#18+
create procedure UniversalReplace @parSourceStr DSCOMMENT , @parSearchStr DSCOMMENT , @parReplaceStr DSCOMMENT , @parDestinationStr DSCOMMENT OUTPUT as /* OP_DISP.SQL UniversalReplace - Процедура позволяет заменить в строке в все вхождения одной подстроки на другую. Независит от платформы (вместо функции replace() существующей только в MS SQL). @parSourceStr - исходная строка @parSearchStr - искомая подстрока @parreplaceStr - подстрока для ничего не возвращает. */ begin declare @locReplacePos INT -- позиция подстроки для замены select @locReplacePos = patindex('%'+@parSearchStr+'%', @parSourceStr) if (@locReplacePos > 0 ) begin select @parDestinationStr = '' while @locReplacePos > 0 begin select @parDestinationStr = @parDestinationStr + substring(@parSourceStr, 1, @locReplacePos-1) + @parReplaceStr, @parSourceStr = substring(@parSourceStr, @locReplacePos+len(@parSearchStr), len(@parSourceStr)) select @locReplacePos = patindex('%'+@parSearchStr+'%', @parSourceStr) end select @parDestinationStr = @parDestinationStr + @parSourceStr end else select @parDestinationStr = @parSourceStr end go ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 16:12 |
|
||
|
Замена символов в строке!
|
|||
|---|---|---|---|
|
#18+
boogimanА если в данной строке несолько раз встречается данный символ? Основной вопрос заключался в этом!!! Либо циклом, либо одно из двух ... Можно еще написать оочень сложное выражение, символов в строке все равно конечное число -- не более 255. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 17:19 |
|
||
|
Замена символов в строке!
|
|||
|---|---|---|---|
|
#18+
MasterZivВ 11 еще нет функции замены подстроки (string-replace кажетсяТо есть, я в один шаг не смогу в исходной строке XY_Y_Y_Z заменить все сочетание символов Y_ на Y ??? Другими словами, я не смогу сделать вот так: было XY_Y_Y_Z, применили один раз встроенную функцию, получили XYYYZ ??? Или-таки я могу так сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 19:42 |
|
||
|
Замена символов в строке!
|
|||
|---|---|---|---|
|
#18+
Вот кусок из триггера который делает примерно то что надо: CREATE TRIGGER dbo.products_ins ON dbo.products FOR INSERT AS declare @rc int, @syb_err int, @affected_rows_pr int, @affected_rows_po int, @affected_rows_req int -- -- Initialization Variables -- select @syb_err = @@error, @affected_rows_pr = @@rowcount, @affected_rows_po = 0, @affected_rows_req = 0, @rc = 0 -- -- Check error and qty of inserted rows in product -- if @syb_err != 0 goto syb_err if @affected_rows_pr = 0 return /*******************************************************************************/ /* 05.30.02 E.K. Quotes replacing */ /* Any of symbols in [] in the col."security_description" */ /* table "products" ['"()] replaced by one space in loop (according to O.L.) */ /* self_recursion is off by default, so trigger will not fire again */ /*******************************************************************************/ -- -- Initialization loop variable with anything > 0 -- declare @affected_rows_qts int select @affected_rows_qts = @affected_rows_pr /* Anything > 0 */ -- -- Looping through string for all updated with quotes rows -- --if update (security_description) --or (for all other columns need to put under or and set clauses) while (@affected_rows_qts > 0) begin /* Loop */ update products set prd.security_description = stuff(prd.security_description,patindex("%['()""]%",prd.security_description),1," ") from products prd, inserted i where patindex("%['()""]%",prd.security_description) > 0 and prd.cusip = i.cusip -- -- Check error and qty of updated rows in product -- select @syb_err = @@error, @affected_rows_qts = @@rowcount if @syb_err != 0 goto syb_err end /* Loop */ -- -- Debug: Should be deleted -- select i.security_description, prd.security_description -- from products prd, inserted i -- where prd.cusip = i.cusip -- /********************************************************************************/ /* End 05.30.02 E.K. Quotes replacing */ /********************************************************************************/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2005, 20:26 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=33367681&tid=2013274]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
80ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 261ms |
| total: | 432ms |

| 0 / 0 |
