powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / isql. Пропадает символ char(13)
17 сообщений из 17, страница 1 из 1
isql. Пропадает символ char(13)
    #34800325
Alesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемы коллеги, есть проблема.

Sybase ASE 12.5
При выполнении с помощью утилиты isql закачки данных в таблицу в текстовых полях (char, varchar) у меня пропадают символы с кодом 13, если они есть в значении поля.

Пример скрипта:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create table #test (Value char( 250 ))

insert into #test (Value)
values ('aaaaa
bbbbb
ccccc')

select ascii(substring(Value, 6 , 1 )),ascii(substring(Value, 7 , 1 )) from #test 

drop table #test
go

При обычном выполнении (например в cast):
13 10

При выполнении через isql:
Код: plaintext
isql.exe -S сервер -D база -U пользователь -P пароль -i файл_со_скриптом_выше
10 98

Может кто сталкивался, объясните почему и как это обойти.
...
Рейтинг: 0 / 0
isql. Пропадает символ char(13)
    #34800388
Rubber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AleshaУважаемы коллеги, есть проблема.

Sybase ASE 12.5
При выполнении с помощью утилиты isql закачки данных в таблицу в текстовых полях (char, varchar) у меня пропадают символы с кодом 13, если они есть в значении поля.

Пример скрипта:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create table #test (Value char( 250 ))

insert into #test (Value)
values ('aaaaa
bbbbb
ccccc')

select ascii(substring(Value, 6 , 1 )),ascii(substring(Value, 7 , 1 )) from #test 

drop table #test
go

При обычном выполнении (например в cast):
13 10

При выполнении через isql:
Код: plaintext
isql.exe -S сервер -D база -U пользователь -P пароль -i файл_со_скриптом_выше
10 98

Может кто сталкивался, объясните почему и как это обойти.
а вы файлик (который <-i файл_со_скриптом_выше>) откройте и посмотрите - есть ли там 13-й символ ?
ибо чего там есть в строке - то и передаётся серверу.
они у вас не пропадают, их просто там изначально нет...
...
Рейтинг: 0 / 0
isql. Пропадает символ char(13)
    #34800444
Alesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rubberа вы файлик (который <-i файл_со_скриптом_выше>) откройте и посмотрите - есть ли там 13-й символ ?
ибо чего там есть в строке - то и передаётся серверу.
они у вас не пропадают, их просто там изначально нет...
Ув. Rubber , это все проверялось в первую очередь, иначе бы и вопроса не было.
Там все нормально. Переход на новую строку обычный: char(13)+char(10).
Не могли бы вы попробовать запустить это у себя, какой будет результат?
...
Рейтинг: 0 / 0
isql. Пропадает символ char(13)
    #34800525
Rubber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уже вижу, действительно 13-й уходит
...
Рейтинг: 0 / 0
isql. Пропадает символ char(13)
    #34800530
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alesha пишет:

> При выполнении с помощью утилиты isql закачки данных в таблицу в
> текстовых полях (char, varchar) у меня пропадают символы с кодом 13,
> если они есть в значении поля.
>
> Пример скрипта:
>
> create table #test (Value char(*250*))
>
> insert into #test (Value)
> values ('aaaaa
> bbbbb
> ccccc')
>
> select ascii(substring(Value,*6*,*1*)),ascii(substring(Value,*7*,*1*)) from #test

Возможно ISQL переводит всё в запросе в UNIX-style line ending.

На самом деле посылать в языковом запросе непечатные символы на
сервер - дело неблагодарное очень.

Лучше бы вы писали это в виде бинарной константы или
с явно заданными символами перевода.

'aaaaa' + char(10) + char(13) + 'bbbbb' ...

А еще лучше биндить параметр в ODBC или Open Client.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
isql. Пропадает символ char(13)
    #34800573
Alesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Лучше бы вы писали это в виде бинарной константы или
с явно заданными символами перевода.

'aaaaa' + char(10) + char(13) + 'bbbbb' ...

А еще лучше биндить параметр в ODBC или Open Client.

Как это будет выглядеть в виде бинарной константы, можно пример?
И что значит "биндить параметр в ODBC или Open Client"?
...
Рейтинг: 0 / 0
isql. Пропадает символ char(13)
    #34800604
Alesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс. Насчёт "биндить параметр в ODBC или Open Client" вопрос снимается, я понял что имеется ввиду, но этот вариант не подходит. Нужно именно через isql.
А самому isql никак не скажешь, что бы он не использовал UNix формат?
...
Рейтинг: 0 / 0
isql. Пропадает символ char(13)
    #34800609
Rubber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подозреваю дело не в передаче данных (или записи в таблицу), видимо дело в парсере SQL.

возможно перед тем как обработать из тела запроса удаляются такие символы, а походу они убираются и из строковых констант.

Код: plaintext
1.
select charindex(char( 13 ), 'a
b')
...
Рейтинг: 0 / 0
isql. Пропадает символ char(13)
    #34800622
Rubber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а вот 10-й будет найден
Код: plaintext
1.
select charindex(char( 10 ), 'a
b')
очевидно - выход только в замене на char(13)
...
Рейтинг: 0 / 0
isql. Пропадает символ char(13)
    #34800630
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alesha пишет:

> Как это будет выглядеть в виде бинарной константы, можно пример?

0x и затем шестнадцатиричные коды символов, по две цифры на символ.

'aaa' - 0x414141
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
isql. Пропадает символ char(13)
    #34800639
Rubber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
select charindex(char( 13 ), 'a'+char( 13 )+'
b')
...
Рейтинг: 0 / 0
isql. Пропадает символ char(13)
    #34800789
Alesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rubberподозреваю дело не в передаче данных (или записи в таблицу), видимо дело в парсере SQL.

возможно перед тем как обработать из тела запроса удаляются такие символы, а походу они убираются и из строковых констант.

Код: plaintext
1.
select charindex(char( 13 ), 'a
b')

Возможно я не понял, что вы хотели сказать, но из текстовых полей, констант, переменных и т.п. символ 13 никуда не исчезает. Исчезает он только при использовании isql.
Вариант с +char(13)+ работает, но хотелось бы узнать, может есть другие варианты,
например с помощью настроек самого isql (хотя там таких настроек не нашёл) или ещё как-нибудь?
...
Рейтинг: 0 / 0
isql. Пропадает символ char(13)
    #34801676
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это такая фича любых сишных программ пользующих ф-ю fopen() для открытия файла в текстовом режиме.
char(13) просто отсекается...

смиритесь или пользуйте другой клиент.
...
Рейтинг: 0 / 0
isql. Пропадает символ char(13)
    #34801782
Alesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry.это такая фича любых сишных программ пользующих ф-ю fopen() для открытия файла в текстовом режиме.
char(13) просто отсекается...

смиритесь или пользуйте другой клиент.
Так тут вроде ничего не нужно открывать в текстовом режиме.
Или вы под клиентом подразумеваете isql?

Смирился, а что остаётся. Использую подмену +char(13)+char(10)+. Но это конечно не то решение, что нужно. Да и напрягает тот факт, что просто выбрасывается символ из значения поля и всё.
...
Рейтинг: 0 / 0
isql. Пропадает символ char(13)
    #34801943
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alesha пишет:

> Смирился, а что остаётся. Использую подмену +char(13)+char(10)+. Но это
> конечно не то решение, что нужно. Да и напрягает тот факт, что просто
> выбрасывается символ из значения поля и всё.

Я хочу подчеркнуть, что это - единственно правильное решение.
И к тому же полагаться, что перевод строки - это именно char(13)+char(10)
(или еще какое-то сочетание этих магических символов) просто нельзя.
Оно на разных платформах разное. Так что ASE-то делает все очень правильно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
isql. Пропадает символ char(13)
    #34801976
Alesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Я хочу подчеркнуть, что это - единственно правильное решение.
И к тому же полагаться, что перевод строки - это именно char(13)+char(10)
(или еще какое-то сочетание этих магических символов) просто нельзя.
Оно на разных платформах разное. Так что ASE-то делает все очень правильно.

Исключение неких символов из заковыченого строкового значения без всяких предупреждений - это правильно?
Сомневаюсь.
Почему же char(10) остаётся?
На разных платформах разное, но здесь похоже был принят стандарт в пользу одной из платформ.
...
Рейтинг: 0 / 0
isql. Пропадает символ char(13)
    #34802113
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alesha пишет:
> Исключение неких символов из заковыченого строкового значения без всяких
> предупреждений - это правильно?

Они непечатные !! Перевод строки на разных системах выглядит по-разному.

> На разных платформах разное, но здесь похоже был принят стандарт в
> пользу одной из платформ.

Да, в пользу UNIX. И языка C. Там перевод строки - '\n'.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / isql. Пропадает символ char(13)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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