Jag har i VBScript/ASP skapat en 2-dimensionell array/matris (7,15) där jag lagrar boolska värden (sant/falskt). Jag vill nu kunna lagra denna information i en MS SQL Server 2000 databas på ett smidigt sätt... hmmm... skulle behöva minst 4 kolumner i den tabellen, Position i arrayen (x), Position i arrayen (y), Värde(Sant/Falskt), Relation(id)... Låter som ett väldigt klumpigt sätt... borde väl finnas något bättre sätt..??? Du kan göra om den till en sträng, t.ex. "(true, ..., false); (true, ..., false); ...; (false, ..., true)". Formatet bör naturligtvis vara lätt att parsa. Jepp... jag har den nu som en kommaseparerad sträng där jag endast har med de celler som är True, typ: Som Patrik skriver, räcker det ju med två kolumner, eftersom elementen är booleanska. Du sparar helt enkelt ned koordinatparen för de element som är true. De element som är false sparar du inte i databasen. Tja... relationen i den ena kolumnen och koordinaten i den andra... fast jag tycker fortfarande det känns som ett klumpigt sätt. Matriser/vektorer i databaser är alltid knepigt eftersom det strider mot 1:a? normalformen.Lagra matris i databas
Något tips på hur jag skall gå tillväga?Sv: Lagra matris i databas
Sv: Lagra matris i databas
Sv: Lagra matris i databas
<code>
"A1,A2,A3,A11,A12,C4,C5" etc
</code>
Får kanske nöja mig med det så länge... ;)Sv: Lagra matris i databas
Sv: Lagra matris i databas
Informationen i matrisen är relaterad till annan information i databasen... och vissa matriser kan innehålla 5 "sanna" värden och andra matriser kan innehålla 52 eller 78 eller 105... :S
Men jag tänkte mer på om det fanns en datatyp man kunde använda för att spara ner en vektor(matris/array) i SQL?
Verkar som om min stränglösning fortfarande är det smidigaste sättet för mitt problem... och strängen blir ju inte allt för lång heller... så det får duga så länge. ;)Sv: Lagra matris i databas
Har dock precis som du ofta stött på problemet att man har en vektor med fast antal värden men det finns ingen generell lösning.
Om du behöver kunna hämta informationen om ett visst element genom en fråga så finns det tyvärr inget annat sätt än att lagra position + värde i en tabell.
Med logiska värden kan man naturnligtvis göra som Stefan säger och låt en saknad post betyda falskt.
Om du inte behöver komma åt de enskilda värdena i en fråga kan du spara data som text i en eller annan form. (En gång gjorde jag faktiskt bara uuencode på binära data)
Ett sätt är att använda 0 och 1 så här:
For ii = 0 To 6
For jj = 0 To 14
str = str & -Cint(minarray(ii,jj))
Next
Next
Och för att läsa tillbaka
For ii = 0 To 6
For jj = 0 To 14
minarray(ii,jj) = CBool(mid(str,ii*15+jj+1,1))
Next
Next