
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
01.08.2005, 14:34
|
|||
|---|---|---|---|
|
|||
есть ли в SQL что-то вроде CHR ??? HELP |
|||
|
#18+
имеем текст состоящий из заголовка и собственного текста (разделенные переводом коретки). Стоит задача загнать заголовок и тело в разные поля таблицы. Нужно написать харонимую процедуру. Я для этого хочу пробегать по тексту и при первом нахождении ЭНТЕРА разбивать на заголовок и тело. Вот только как мне определить этот несчасный ентер??? И еще вопрос по обединению строк. Можно ли так писать: FOR i = 1 TO 14 LET head=head||'a'; END FOR ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2005, 18:43
|
|||
|---|---|---|---|
|
|||
есть ли в SQL что-то вроде CHR ??? HELP |
|||
|
#18+
SNK2004имеем текст состоящий из заголовка и собственного текста (разделенные переводом коретки). Стоит задача загнать заголовок и тело в разные поля таблицы. Когда мне понадобилось отрезать от текста кусочки, я написал "внешнюю процедуру" на C, откомпилировал и с тех пор ею пользуюсь. Беда только одна: у меня куски текста были varchar(255). Что будет с TEXT, и как с ним вообще работается, без понятия. SNK2004 Можно ли так писать: FOR i = 1 TO 14 LET head=head||'a'; END FOR Да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.08.2005, 11:21
|
|||
|---|---|---|---|
|
|||
есть ли в SQL что-то вроде CHR ??? HELP |
|||
|
#18+
Ilya Kulagin SNK2004имеем текст состоящий из заголовка и собственного текста (разделенные переводом коретки). Стоит задача загнать заголовок и тело в разные поля таблицы. Когда мне понадобилось отрезать от текста кусочки, я написал "внешнюю процедуру" на C, откомпилировал и с тех пор ею пользуюсь. Беда только одна: у меня куски текста были varchar(255). Что будет с TEXT, и как с ним вообще работается, без понятия. SNK2004 Можно ли так писать: FOR i = 1 TO 14 LET head=head||'a'; END FOR Да. может можешь выложить пример такой процедуры и как ее скомпилировать под информикс. Я просто такого никогда не делал. Где можно об этом почитать??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.08.2005, 15:11
|
|||
|---|---|---|---|
|
|||
есть ли в SQL что-то вроде CHR ??? HELP |
|||
|
#18+
SNK2004 может можешь выложить пример такой процедуры и как ее скомпилировать под информикс. Я просто такого никогда не делал. Где можно об этом почитать??? Прочитать - "Extending IDS", файл называется 6217.pdf, на широко известном сайте (http://www.informix.com.ua/answers/english/docs/92ids/6217.pdf) есть. Скомпилировать - компилятором. Получить в результате библиотеку. В частном случае соляриса и gcc выглядит, например, так: Код: plaintext 1. 2. 3. Ну а потом объявляю функцию: Код: plaintext 1. 2. 3. 4. Исходник (возвращает системное время с миллисекундами в переменной типа varchar - на x86 солярисе current year to fraction возвращает только с точностью до секунд, что не всегда хорошо) выглядит так: Код: 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. Неоптимальность кода - от незнания C. Ну не знаю я этого языка, а пришлось быстро писать функцию... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.08.2005, 17:50
|
|||
|---|---|---|---|
есть ли в SQL что-то вроде CHR ??? HELP |
|||
|
#18+
Как вариант ---------------------------------------------------------------------------- -- Процедура get_CR_LF() возвращает два символа 0x0D 0x0A ---------------------------------------------------------------------------- --drop procedure get_CR_LF; create procedure get_CR_LF() returning nchar(2); return (select data[29,30] from sysprocbody where procid = (select procid from sysprocedures where lower(procname) = lower('get_CR_LF')) and datakey='T' and seqno=1); end procedure; ---------------------------------------------------------------------------- -- Пример ---------------------------------------------------------------------------- execute procedure get_CR_LF() ---------------------------------------------------------------------------- -- Процедура test_proc1(input) -- разделяет входную строку (input) -- на заголовок (head) и остальной текст (body) ---------------------------------------------------------------------------- --drop procedure test_proc1; create procedure test_proc1( input nvarchar(250) ) returning nvarchar(250); define head, body nvarchar(250); define crlf nchar(2); let crlf = get_CR_LF(); return 'input = ' || trim(input) with resume; let head = replace(input,crlf,rpad(' ',500,' ')); let body = substr(input,length(head)+3); return 'head = ' || trim(head) with resume; return 'body = ' || trim(body) with resume; end procedure; ---------------------------------------------------------------------------- -- Пример ---------------------------------------------------------------------------- execute procedure test_proc1( 'Заголовок' || get_CR_LF() || 'Остальной текст' ) --результат такой: --input = Заголовок <перевод строки> Остальной текст --head = Заголовок --body = Остальной текст ---------------------------------------------------------------------------- Данный сценарий любезно предоставил И.Каленченко .... :) C уважением, GVF112 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.08.2005, 18:34
|
|||
|---|---|---|---|
есть ли в SQL что-то вроде CHR ??? HELP |
|||
|
#18+
GVF112Данный сценарий любезно предоставил И.Каленченко .... :) Согласно гуглю первая публикация рецепта от - Lambros Papadopoulos 20.04.2001 Данный сценарий есть также в UCDI FAQ с момента его основания. Q.> Как вставить перенос строки (другой непечатный символ) в select? A.> http://sql.ru/forum/actualthread.aspx?tid=146507 select to_char(today, "%n") from one_row Можно и %t табуляцию вывести. A.> Евгений Нечаев select "aaa"||ascii(10)||"bbb" from systables where tabid=1; Где ascii(10), процедура выводящая символ из таблицы. CREATE PROCEDURE ascii(code INTEGER) RETURNING char(1); define ch_r char(1); select ch into ch_r from ascii_t where ascii_t.code=code; RETURN ch_r; END PROCEDURE; Структура и содержание таблицы я думаю понятны. В 9-ке функцию ascii() можно реализовать на C. дополнение Леонид Воронцов: ------------ Символы CR и LF есть в теле процедуры systdist, а достать их можно: SELECT data[ 69, 70 ] FROM sysprocbody WHERE datakey = 'T' AND procid = 1 AND seqno = 1 дополнение Игорь Завгородний: ------------ Интересное решение, но имеющее минимум два но: 1. На 9-ке смещение будет другим. 2. CR LF будет только в Win инсталляции. Обойти оба "Но" конечно можно, создав свою процедуру, обладающую аналогичными свойствами. ------ Q.> Каким способом затолкать к примеру перевод строки в поле Ch A.> Евгений Нечаев Или программно используя переменную, или подготовив файл для load где перевод строки слешируется. 10|\<символ>| ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=44&tablet=1&tid=1608952]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
77ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 412ms |

| 0 / 0 |
