|
|
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
6.5 create table blabla (field varchar(255)) go isnert blabla select 'qwerty' go select field from blabla получаю значение field, дополненное пробелами до 255 символов мне надо без пробелов select rtrim(field) from blabla не помогает select rtrim(convert(char(255),field)) from blabla тоже А КАК? P.S: в blabla в field вставляются строки, длина которых заранее не известна и колеблется в пределах от 1 до 255 байт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2002, 23:40:51 |
|
||
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
не знаю как в 6.5 а в 2000 SET ANSI_PADDING ON|OFF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2002, 16:22:38 |
|
||
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
Не уверен, что правильно понимаю, но думается, что когда я в клиенте открываю recordset, источником для которого является view на сервере, то сервер выбирает записи посредством view и результат возвращает клиенту. Размер этой выборки напрямую зависит от (длина записи) Х (число записей). Если в поле записи типа varchar(255) строка, например, из 10 байт, то остальные будут пробелами (я не имею ввиду как SQL Server хранит такие поля, я про то как он их возвращает). Эти пробелы меня не интересуют, мне их нужно обрезать до того, как клиент получит результат от сервера. Зачем мне получать лишние 245 байт для каждой записи (это если в поле записывалась строка из 10 символов, но это не факт, может быть 20,30 и т.д, потому varchar(255), а не char(10)), а потом обрезать их в клиенте. Возможно я заблуждаюсь в своих рассуждениях, поправте меня если это так, а лучше ОТВЕТЬТЕ НА ВОПРОС, пожалуйста. Или вопрос такой простой, что никто не хочет отвечать? 4 RomНе знаю будет ли рабоать, завтра на работе проверю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2002, 01:14:32 |
|
||
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
Попробуем разобраться. set ansi_padding on|off действует только при создании колонки. И еще. The SQL Server ODBC driver and Microsoft OLE DB Provider for SQL Server automatically set ANSI_PADDING to ON when connecting. This can be configured in ODBC data sources, in ODBC connection attributes, or OLE DB connection properties set in the application before connecting. SET ANSI_PADDING defaults to OFF for connections from DB-Library applications. Все это может сказаться при создании временной таблицы. Или уже сказалось при создании постоянной таблицы. Проводим эксперимент. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. -------------------------- -------------------------- qwerty ! asdfg! -------------------------- -------------------------- qwerty! asdfg! (При просмотре в броузере, все пробелы из первого ответа, естественно, собрались в один.) Выходит, самовольно SQL пробелы не добавляет, а только отсекает их при вставке, если ANSI_PADDING OFF. Без завершающих пробелов все вставляется "как есть". ===================== Рекомендую попробовать пройтись по исходной таблице RTRIM и контролировать, в каком виде записи вставляются в таблицу. З.Ы. Если это поможет, то мы с Вами по одним граблям ходили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2002, 07:41:08 |
|
||
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
По-моему, в версии 6.5 есть только один надёжный способ - выводить колонку с полем datalength(field) и обрезать на клиенте. И, само собой, читать в BOL про "Microsoft OLE DB Provider" для данной версии бессмысленно :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2002, 11:14:01 |
|
||
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
Я утром не совсем проснулся (но зато инет дешев). Конечно, не при добавлении колонки, а при вставке строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2002, 18:27:04 |
|
||
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
6.5 4 alexeyvg Вот именно, что не хочется для этого еще одно поле заводить. 4 Cat2 В принципе, мне это подходит, если они обрезаются при вставке, то и выводятся в таком же виде. Только вот одна проблема, на одном сервере это работает, а на другом нет. Может еще какие установки на это влияют? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2002, 01:00:53 |
|
||
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
Не понял. У Вас есть два сервера, к которым могут подключатся одинаковые клиенты? Или клиенты разные? Да вроде клиенты тут не причем. А может причем? То, что я вычитал в БОЛ, приведено выше. В порядке эксперимента, проставьте в начале каждой транзакции на вставку-обновление set ansi_padding off Не понимаю, зачем сделано так, что по умолчанию он становиться в ON. И вообще, мне спать хочется, а Вы так и не ответили RTRIM помогло? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2002, 01:44:16 |
|
||
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
4 Cat2 Да нет, просто я ваши скрипты запускал на разных серверах (не из клиентов, а в ЕМ). Так вот на одном работает так как вы говорите, а на другом нет. Вот я и спрашиваю: может быть что-то еще на это влияет? Аналогичн rtrim на одно работает, на другом нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2002, 01:51:54 |
|
||
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
4 Cat2 >В порядке эксперимента, проставьте в начале каждой транзакции на вставку-обновление set ansi_padding off У меня работало только при создании таблицы, а при вставке никак себя не проявляло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2002, 02:04:33 |
|
||
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
Составители хелпов. БЛИН. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2002, 02:10:57 |
|
||
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
4 Cat2 Ну зачем так. Может я прогнал, хотя вроде все верно. В понедельник на работе с новыми силами попробую. Хотя какие будут силы, блин, в воскресенье у нас День рыбака.......... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2002, 02:29:30 |
|
||
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
Радует хотя бы то, что мы с Вами помирились ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2002, 02:40:01 |
|
||
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
4 Cat2 Так, а я вроде и не ссорился ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2002, 02:42:40 |
|
||
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
Значит, мне показалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2002, 08:49:37 |
|
||
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
4 Cat2 Разобрался, set ansi_padding on|off проявляет себя тоько создании таблицы. Так что зря ты их ругал, по крайней мере за это. Когда прошелся по таблице rtrim'oм, все поля обрезались не зависимо был ON или OFF при создании таблицы. Но почему если ON, и данные заносятся в поле так как есть (с завершающими пробелами), и если select rtrim(field1) from blabla rtrim себя никак не проявляет? да и еще. А если тот, кто потом будет сопровождать базу решит создать таблицу заново (не будем выяснять зачем это может понадобиться), откуда ему знать ON был или OFF? Ну, поленится он в документацию заглянуть. Про set ansi_padding on|off я-то все конечно уяснил, но все равно придется заводить поле для хранения размера строки, которая записывается в поле, потому что эта строка ничто иное как имя файла, а оно, как бы, может заканчиваться пробелами, и обрезание может привести к неточной информации об имени файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2002, 00:10:14 |
|
||
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
Похоже на то, что в Вашем случае действительно надо хранить длину поля в отдельном поле и на клиенте правильно его обрабатывать. Объясните ламеру, который кроме виндов ничего не видел, а где в имени файла могут быть важные заключительные пробелы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2002, 20:00:00 |
|
||
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
4 Cat2 Это ум за разум зашел, блин. У на жара 40 градусов в тени. Так а все таки почему select rtrim(field1) from blabla rtrim себя никак не проявляет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2002, 20:27:56 |
|
||
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
Фиг его знает. Хотя у меня комфортная температура, 18 градусов в тени, 19 на солнце. Никогда не задумывался над этим вопросом, но по-моему сервак возвращает поле длиной, которая равна описанной длине значения поля. По крайней мере в Query Analiser это выглядит именно так. А потом, наверное, уж клиент решает, усекать или нет. Может в этом направлении копать? Все вышесказанное является чистым теорействованием. Бросьте на мое мыло тестовые данные. Попробую в реальной обстановке. Обстановка - W98, MS SQL7 DE. Фиг его знает, какие у меня патчи, дома я об этом не задумываюсь. Клиент будет Delphi+ADO и ASP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2002, 21:07:17 |
|
||
|
Обрезание
|
|||
|---|---|---|---|
|
#18+
4 Cat2 Да смех здесь тестировать че-то. Я уж по разному пробовал. Не действует оно и все. Да на пример примерах, например (простите за каламбур). Вообще мне это пока не мешает, но так, для общего развития не помешает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2002, 00:10:06 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32037057&tid=1821766]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 360ms |

| 0 / 0 |
