CYFROWY BARON • PROGRAMOWANIE • Zobacz wÄ…tek - Typy danych w SQL Server 2008
Strona 1 z 1

Typy danych w SQL Server 2008

Nowy postNapisane: piÄ…tek, 30 lipca 2010, 22:13
przez Android
Witam,
1. Chciałem stworzyć swoj typ danych w SQL Server 2008, ktory bedzie przechowywał wartosci TAK i NIE (polska wersja logicznego).
W interbase służyło do tego polecenie CREATE DOMAIN nazwa VALUES('TAK','NIE'); niestety nie moge znalezc odpowiednika dla SQL SERVER 2008.
2. Przeglądałem opisy wbudowanych typów danych (przy okazji szukając odpowiedzi na punkt 1) i ku mojemu zdziwieniu SQL Server nie ma typu bool/boolean itp, z jakiego typu najlepiej korzystać do obsługi wartości logicznych?
Z góry dziękuje za pomoc :)
Pozdrawiam

Re: Typy danych w SQL Server 2008

Nowy postNapisane: sobota, 31 lipca 2010, 13:52
przez Cyfrowy Baron
Na tej stronie http://searchsqlserver.techtarget.com/feature/Using-T-SQL-data-types-in-SQL-Server-2008 znajdziesz dużo na temat SQL Server 2008.

Re: Typy danych w SQL Server 2008

Nowy postNapisane: sobota, 31 lipca 2010, 14:50
przez Android
Dzieki :)
Narazie udało mi się znaleźć jak tworzyć typ danych za pomocą komendy exec sp_addtype nazwa, [typ wbudowany], [wolny badz nie null], po wykonaniu tego polecenia typ jest dostępny w folderach z typami deklarowanymi przez użytkownika (z poziomu SQL Server Management Studio) niestety to nie rozwiązuje do końca moich problemów. Nie udało mi się podać konkretnych wartości jakie może przyjmować nowy typ danych (odpowiednik sekcji values('TAK','NIE')). Nowe typy, które tworze działają jak alias dla starego typu danych. Teoretycznie komenda

KOD cpp:   •  UKRYJ  •
exec sp_addtype logiczny, 'nvarchar(3)', not null;


powinna załatwić sprawę jeśli tylko byłaby możliwość podania możliwych wartości, szukałem kilka godzin w sieci (strony polskie i angielskie) i helpie i niestety nie udało mi się znaleźć ani słowa o jakimś odpowiedniku sekcji values w tym kontekście. Wpisanie

KOD cpp:   •  UKRYJ  •
 exec sp_addtype logiczny, 'nvarchar(3) values('TAK','NIE')', not null;


powoduje zgłoszenie błędu. Nie pamiętam dokładnie angielskiej treści ale w tłumaczeniu znaczyło, że parametr values jest nie poprawny / nie właściwy.
Z tego co na szybko przejrzałem link od Ciebie to tam też tego nie ma - podobnie jak na większości stron są opisy standardowych typów i ewentualnie kod podany przeze mnie do tworzenia "aliasu" dla typu.
Jeśli ktoś byłby zainteresowany, to ze swojej strony mogę podać link do całkiem solidnie zrobionego tutoriala w wersji angielskiej


http://www.functionx.com/sqlserver/

Re: Typy danych w SQL Server 2008

Nowy postNapisane: sobota, 31 lipca 2010, 15:49
przez Cyfrowy Baron
Może w tej wersji bazy danych typ boolean jest reprezentowany przez typ integer, w c++ zmiennej typu bool można przypisywać wartośći typu int i tak false = 0, a true = wartości różne od 0.

http://www.webdeveloper.com/forum/showthread.php?t=209453

Re: Typy danych w SQL Server 2008

Nowy postNapisane: sobota, 31 lipca 2010, 20:58
przez Android
Doszukałem się informacji (m.in. na stronie od Ciebie też to było), że alternatywa dla typu boolean jest typ bitowy - bit, który przyjmuje wartości 0 i 1 chociaż faktycznie można sobie poradzić na zwykłym int lub nawet char/nchar - z tym, ze w aplikacji będzie trzeba odczytać wartość i sprawdzić na if'ie co ma zrobić. W interbase (a właściwie przy komponencie IBQuery) było wygodniej bo można było skorzystać z odczytywania danych jako logiczne i rozwiązywało to problem. Chyba nie ma niczego specjalnie dedykowanego jako typ logiczny - przeglądałem masę stron z opisem typów danych i nigdzie nie pojawia się w ogóle kategoria typów logicznych.
Nadal szukam informacji jak podać spis możliwych wartości we własnym typie lub po prostu przy deklarowaniu kolumny tabeli.