webForumDet fria alternativet

Datafält i MS SQL

8 svar · 515 visningar · startad av Jymdis

JymdisMedlem sedan mars 20016 260 inlägg
#1

datafält i SQL server..
när jag vill använda ett litet tal så har jag ju int.. men om jag vill ha ett tal som ska klara av låt oss säga miljontals siffror.. Vad ska jag ha för datatyp då? (den behöver inte ha decimaler)..

------------------
-------------------
Andreas Lännerberg
Projektledare, Sluzzen Community

emissionMedlem sedan dec. 19996 721 inlägg
#2

Ett tal som är miljontals siffror långt kan knappast vara intressant att behandla som ett tal (och det går heller inte). Datatyperna text och image kan vara ett alternativ.

JymdisMedlem sedan mars 20016 260 inlägg
#3

Om vi säger såhär då:
Jag har ett fält med Unikt ID som ökar ett hela tiden och jag ska kunna ha 1 miljon sådana fält. Vad använder jag för datatyp då?

------------------
-------------------
Andreas Lännerberg
Projektledare, Sluzzen Community

LarsGMedlem sedan dec. 200012 464 inlägg
#4

I ett fält som är av datatypen integer så kan man lagra värden som ligger mellan -2147483648 och 2147483647 vilket torde räcka gott och väl för dina behov.

------------------
essentitia preter non sans multiplicandum

Peter_BMedlem sedan apr. 2000642 inlägg
#5

Prova annars med en UNSIGNED INT, eftersom du ju bara behöver positiva heltal. du får då dubbelt så många platser som med en vanlig INT.

inte för att det kommer att spela någon roll, men ändå.. :)

------------------
PeterSign v 2.3.36

JymdisMedlem sedan mars 20016 260 inlägg
#6

Alltså..
Dom datatyperna ni pratar om finns inte på servern?
Okej. Jag är ganska "newbie" när det gäller MS SQL Server (den versionen jag arbertar mot är 7.0).
Dom här valen kan jag välja i datatyp:
Binary, bit, char, datetime, decimal, float, image, int, money, nchar, ntext, numeric, nvarchar, smalldatetime, smallint, smallmoney, text, timestemp, tinyint, uniqueident, varbinary, varchar..

När jag ska ha ett fält med mycket text tar jag varchar, men vilket fält ska jag ta om jag behöver ett långt nummer? (inget av det ni har sagt innan finns här och jag tycker jag har provat alla för att se om man kan få långa nummer)..

Jag har ju uppenbarligen missat nåt.. Men vad?

------------------
-------------------
Andreas Lännerberg
Projektledare, Sluzzen Community

LarsGMedlem sedan dec. 200012 464 inlägg
#7

Int och integer är synonymer, så använd int. T.ex. så här

CREATE TABLE members
( memberId int IDENTITY(1,1)
PRIMARY KEY CLUSTERED,
memberName varchar(50) NOT NULL
DEFAULT 'Nisse tuta')

Det blir en tabell med en identitykolumn, som alltså får unika värden automatiskt. Första värdet blit 1 och nästa 2 et.c. och maxvärdet är alltså dryga 2 miljarder.

------------------
essentitia preter non sans multiplicandum

JymdisMedlem sedan mars 20016 260 inlägg
#8

Okej..
Nu använder jag Enterprise Manager och får då upp ett fönster.. där d står
datatyp längd precision skala
jag har förstått att jag ska ställa in datatyp till int, men när jag gör det kan jag inte ställa in längre längd än 4?

------------------
-------------------
Andreas Lännerberg
Projektledare, Sluzzen Community

@ndersMedlem sedan juni 200032 969 inlägg
#9

nä, det ska du inte heller. men det betyder inte för den sakens skull att det är fyra siffror som gäller.

integers vill ha 4 bytes att lagras i, och kan lagra enligt larsgs input ovan. ställ alltså din räknarkolumn till integer och nöj dig där. jag lovar, det räcker.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)