Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2011, 07:10   #1
Greek9000
Форумчанин
 
Регистрация: 01.09.2009
Сообщений: 151
По умолчанию MSSQL длинные строки

Прошу подсказать, если кто знает, как правильно работать с длинными строками в MS SQL Server 2008.

Есть поле типа nvarchar(max), в которых хранятся очень длинные строки (более 30 тыс. символов). Необходимо эти строки разбить на значения ("сплиттануть"). Для этого написал ф-ю split, которая производит это разделение. Но работает она только со строками у которых длина не превышает 4000 символов. Т.е., функция substring может работать только со строками, у которых длина не превышает 8000 байт (1 nvarchar = 2 байта).

Что можно сделать в такой ситуации?
Greek9000 вне форума Ответить с цитированием
Старый 08.04.2011, 08:46   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если есть возможность - то хранить в Blob-поле. И при этом в функции все равно путного мало чего получится, т.е. обрабатывать программно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 08.04.2011 в 09:02.
Аватар вне форума Ответить с цитированием
Старый 08.04.2011, 09:29   #3
Greek9000
Форумчанин
 
Регистрация: 01.09.2009
Сообщений: 151
По умолчанию

Как-то непонятно, почему хранить длинные строки можно, а работать с ними нельзя...
Мне надо-то, по большому счёту, получить i-ый символ длинной строки без ф-ии substring. Неужели в такой системе как MSSQL Server 2008 нет такой простой конструкции как char = string[i]?
Greek9000 вне форума Ответить с цитированием
Старый 08.04.2011, 09:52   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Я на 2000-ом работаю. Там тип nvarchar не более 4000. Varchar - соответственно 8000. Удивлен что в 2008-ом дали возможность более длинные строки использовать, а substring их не кушает. Мне кстати на Delphi 7 не удалось нормально обработать и varchar(1000). Максимум что использую - 255
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.04.2011, 10:51   #5
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

ТСу вряд ли помогу, не мсскльщик
на клиенте это сделать не вопрос

Цитата:
Сообщение от Аватар Посмотреть сообщение
Мне кстати на Delphi 7 не удалось нормально обработать и varchar(1000). Максимум что использую - 255
чо за бред? вы все еще юзаете БДЕ?
да и то это была проблема в плане отображения в гриде строк больше 255 символов, все остальное без проблем - переменной типа string пофиг откуда придут данные, просто вы не умеете их готовить (стопудово и здесь найдутся примеры - поиск в помощь).
soleil@mmc вне форума Ответить с цитированием
Старый 08.04.2011, 11:02   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от soleil@mmc Посмотреть сообщение
чо за бред? вы все еще юзаете БДЕ?
да и то это была проблема в плане отображения в гриде строк больше 255 символов, все остальное без проблем - переменной типа string пофиг откуда придут данные, просто вы не умеете их готовить (стопудово и здесь найдутся примеры - поиск в помощь).
Причем здесь бред? Именно из-за BDE, и только потому что отображалось 255 символов, и по этой причине отсутствие остальных проблем жизнь мне легче не делало. И, что, использование BDE это позор на весь мир?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.04.2011, 12:12   #7
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

а при чем здесь дельфи7?
если мне нужно хранить строки, то я не ломаю голову над их размером и считаю, что тот кто написал типа такого в доках для программеров "раз бде не позволяет отображать в стандартных гридах больше 255 символов, то и не зачем их создавать в базе длиннее" сделал очень плохо - и я периодически сталкиваюсь с гемором, который это породило: обрезание строк там где этого не ждешь (рефакторил несколько проектов, руки поотрывал бы).

если нужно отобразить в гриде часть блоба - ну выцепи эти самые 255 символов сабстром или чем-то подобным

бде - прошлый век, все уже давно пользуются компонентами прямого доступа (не нужно конфигурить алиасы и т.п.) + переползают полностью или частично на другие инструменты разработки
soleil@mmc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Криво отображает формат строки MSSQL 2008 Droid SQL, базы данных 1 01.02.2011 11:00
Excel. Длинные формулы. v00d00 Microsoft Office Excel 4 14.01.2010 18:31
Короткие и длинные... nusik Общие вопросы Delphi 2 13.04.2009 10:05
длинные числа molodzo Общие вопросы C/C++ 4 21.02.2008 12:46
Задача на длинные числы molodzo Помощь студентам 1 21.11.2007 11:23