Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 12:14 25.06.24 
Компютри и Интернет
   >> Бази данни
Всички теми Следваща тема *Кратък преглед

Тема order by nomer - когато е стринг  
Автор123 (Нерегистриран)
Публикувано16.07.07 17:59



Работя с Firebird 1.5 създал съм поле(varchar) за номер на документ. Грешката ми е при проектирането-трябваше да е Integer. Сега си бера последствията-
не мога да сортирам по този номер, защото 10 го слага преди 3, защото почва с едно. Не мога да дропна полето и да го създам наново с правилния тип, защото клиентите работят отдавна и са писали много данни.
Има ли измъкване от ситуацията? Или да отписвам "order by" за това поле?



Тема Re: order by nomer - когато е стрингнови [re: 123]  
Автор bira_more (бира)
Публикувано16.07.07 18:20



добавяш поле тип Int.
Копираш съдържанието от едното в другото поле - в MySQL - няма да имаш грижи - за фиребърд - не знам.
Дропваш полето което не ти трябва, перименуваш Инт полето - и си в бизнеса :)
Е преди началото на упражненията - задължително архивно копие.

Bеer? Mоre?




Тема cast + viewнови [re: 123]  
АвторHeh (Нерегистриран)
Публикувано16.07.07 18:45



Правиш си view, кастваш до integer и след това си бачкаш с view-то, където можеш да сортираш както си искаш ...



Тема Re: cast + viewнови [re: Heh]  
Автор AйeзCeдaй ((бойна))
Публикувано17.07.07 09:29



не, по-добрият вариант е на бирата.



Тема Re: order by nomer - когато е стрингнови [re: 123]  
Автор killall (Дядо Мраз)
Публикувано17.07.07 12:28



select cast(typoto_pole as integer), drugi_poleta
from tablicite
order by 1

Time is like a drug, too much of it kills you

Тема Re: order by nomer - когато е стрингнови [re: 123]  
Автор bandy (познат)
Публикувано01.09.07 00:48



хм, в MySQL има една команда, която се казва:
ALTER TABLE,
твърде сигурен съм че я има във всяка нормална база от данни ...
и ако във въпросното поле наистина има само цифри то съвсем спокойно, мисля ще мине един обикновен:
ALTER TABLE table_name CHANGE old_col_name column_definition
naprimer
ALTER TABLE test CHANGE nomer_doc nomer_doc INT not null default 0
....
Онези упражнения за премятаници, за цастове, за view-ta смятам че са излишни ...



Тема Re: order by nomer - когато е стрингнови [re: bandy]  
Автор bira_more (бира)
Публикувано04.09.07 17:01



Така обаче може да е... мамата на данните.

Bеer? Mоre?




Тема Re: order by nomer - когато е стрингнови [re: bandy]  
Автор AйeзCeдaй ((бойна))
Публикувано05.09.07 15:29



В оракула не е така.
За да направиш ALTER TABLE table_name MODIFY strFIELD NUMBER(5)
ще ти изгърми с грешка ora-01439, т.е че колоната трябва да ти е празна.
Решението е както е писал Бирата по-горе.
Правиш ново поле number(10) примерно. Копираш там всичко от стринг полето. Предварително обаче всички данни ги конвертираш към number. И там ще стане красотата.
10 6 и 106 с конвертиране към number ще ти гръмне (to_number).
Ако пък не - всичко е просто, лесно и пей сърце....

П.С. Обаче от моят опит никога не е така.



Тема Re: order by nomer - когато е стрингнови [re: AйeзCeдaй]  
Автор killall (Дядо Мраз)
Публикувано05.09.07 19:15



И в Interbase не може с alter table да се смени varchar с integer. Може само да се смени с по-"голям" varchar.
Ако има тригери или stored процедури които ползват въпросното поле не може и да го дроп-не, ще даде грешка че има dependencies. Ако са само няколко тригери/процедури може временно да ги дроп-не, да проложи варианта на бирата и после пак да ги сложи, но ако са повече става доста трудоемко.
Между другото варианта на бирата няма да работи, Интербейс не дава да се преименува полето, трябва да си направи ново поле тип integer, да си копира данните там, да дроп-не старото поле, после да създаде ново поле пак тип integer и със същото име като старото, пак да копира всичко и да изтрие накрая излишното.

Time is like a drug, too much of it kills you

Редактирано от killall на 05.09.07 19:18.



Тема Re: order by nomer - когато е стрингнови [re: killall]  
Автор AйeзCeдaй ((бойна))
Публикувано06.09.07 09:25



Именно, това ми беше идеята, но не съм я описала, написала като хората






Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.