/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Pæn måde at aflæse binære værdier på
Fra : Jens Gyldenkærne Cla~


Dato : 27-08-02 13:58

Jeg har en database med bl.a. følgende tabeller:

Dokumenter, Tekster og Sprog.

Hvert dokument har nogle fælles egenskaber (billeder og ejer) og en
antal tilhørende tekster. Til en opdateringsliste har jeg nu brug
for at undersøge om et givent dokument eksisterer for hvert af de
tre sprog jeg har defineret. Det kan gøres ved hjælp af feltet
sprogVersioner i tabellen Dokumenter. SprogVersioner indholder
bitsummen af sprogID'er for de sprog dokumentet findes i.

Eksempel:

Sprog (sprognavn, ID):
Dansk - 1
Engelsk - 2
Tysk - 4

Dokumenter (dokumentID, sprogVersioner):
1 - 1
2 - 3
3 - 2
4 - 5

Tekster (dokumentID, sprogID, overskrift)
1 - 1 - "Hans Jensens Bondegård"
2 - 1 - "Peters bil"
2 - 2 - "Peter's car"
3 - 2 - "This page only in English"
4 - 1 - "Irmelin fra Brovst"
4 - 4 - "Irmelin auf Brovst"


Nu leder jeg altså efter en funktion - helst i T-SQL, men eventuelt
i asp - der så enkelt som muligt kan svare på spørgsmålene: Findes
dette dokument på dansk|engelsk|tysk.

Jeg forestiller mig noget med at konvertere værdien i
sprogversioner til en strengrepræsentation af et binært tal ("000",
"001" etc.) og så aflæse hhv. 1., 2. og 3. tegn i denne værdi. Men
hvordan får jeg konverteret base 10 til base 2 - og er der nemmere
måder at gøre det på?


--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma
(rettelser modtages gerne i dk.kultur.sprog)

 
 
Jakob Møbjerg Nielse~ (27-08-2002)
Kommentar
Fra : Jakob Møbjerg Nielse~


Dato : 27-08-02 14:26

Jens Gyldenkærne Clausen wrote:
> Nu leder jeg altså efter en funktion - helst i T-SQL, men eventuelt
> i asp - der så enkelt som muligt kan svare på spørgsmålene: Findes
> dette dokument på dansk|engelsk|tysk.

Jeg kender ikke noget til T-SQL, men en hurtig søgning på Google gav
følgende: http://activeserverpages.dk/iishelp/sql/html/ca-co_1.htm.
Måske kan det bruges til noget.

--
Jakob Møbjerg Nielsen | "Five exclamation marks, the
jakob@dataloger.dk | sure sign of an insane mind."
http://www.jakobnielsen.dk/ | -- Terry Pratchett, Reaper Man
Jeg søger et fuldtidsjob som programmør. Tag et kig på hjemmesiden.



Jens Gyldenkærne Cla~ (27-08-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-08-02 14:28

Jakob Møbjerg Nielsen skrev:

> Jeg kender ikke noget til T-SQL, men en hurtig søgning på
> Google gav følgende:
> http://activeserverpages.dk/iishelp/sql/html/ca-co_1.htm.
> Måske kan det bruges til noget.

Desværre ikke. Jeg kender udmærket CAST og CONVERT i T-SQL - men de
kan ikke klare dette problem.

--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma
(rettelser modtages gerne i dk.kultur.sprog)

Jakob Møbjerg Nielse~ (27-08-2002)
Kommentar
Fra : Jakob Møbjerg Nielse~


Dato : 27-08-02 14:53

Jens Gyldenkærne Clausen wrote:
> Desværre ikke. Jeg kender udmærket CAST og CONVERT i T-SQL - men de
> kan ikke klare dette problem.

Ok. Om ikke andet bør du kunne bruge følgende stykke ASP:

<%
dec = 42
strBin = ""

bb = true
while (bb)
strBin = dec mod 2 & strBin
dec = dec\2
if dec = 0 then
bb=false
end if
wend

response.write strBin
%>

Koden er utestet, men metoden er god nok. Der findes dog sikkert en
obskur måde at gøre det pænere på.

--
Jakob Møbjerg Nielsen | "Five exclamation marks, the
jakob@dataloger.dk | sure sign of an insane mind."
http://www.jakobnielsen.dk/ | -- Terry Pratchett, Reaper Man
Jeg søger et fuldtidsjob som programmør. Tag et kig på hjemmesiden.





Jens Gyldenkærne Cla~ (27-08-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-08-02 15:15

Jakob Møbjerg Nielsen skrev:

> Ok. Om ikke andet bør du kunne bruge følgende stykke ASP:

Det ser fint ud, men jeg fandt i mellemtiden følgende artikel:
<http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=476&lngWId=5>

Her er konverteringsfunktioner mellem alle almindelige baser samt
en generel form til at lave flere på. Det eneste den ikke gør er
at formatere uddata med foranstillede nuller (som jeg gerne ville
have af hensyn til enkel aflæsning). Den klarede jeg selv med
følgende funktion:

CREATE FUNCTION dbo.fillZero(@var varchar(100), @len int)
/* Returnerer en varchar af en bestemt længde,
   tomme pladser fyldes med nuller
*/
RETURNS varchar(100)
AS
BEGIN
   
   RETURN RIGHT((REPLICATE('0', @len) + @var), @len)
END


--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma
(rettelser modtages gerne i dk.kultur.sprog)

Kim Bach Petersen (28-08-2002)
Kommentar
Fra : Kim Bach Petersen


Dato : 28-08-02 15:58

Jens Gyldenkærne Clausen wrote:

> Jeg forestiller mig noget med at konvertere værdien i
> sprogversioner til en strengrepræsentation af et binært tal ("000",
> "001" etc.) og så aflæse hhv. 1., 2. og 3. tegn i denne værdi. Men
> hvordan får jeg konverteret base 10 til base 2 - og er der nemmere
> måder at gøre det på?

Du kan teste ved hjælp af en binær 'and'-maske uden du behøver at konvertere
først. Masken fungerer sådan, at man tester op mod det bit, man vil tjekke
om er sat. Hvis det ikke er sat får man værdien nul - ellers værdien man
tester for:

001 and 001 = 001 / 1 and 1 = 1
000 and 001 = 000 / 0 and 1 = 0
010 and 010 = 010 / 2 and 2 = 2
000 and 010 = 000 / 0 and 2 = 0
101 and 010 = 000 / 5 and 2 = 0
111 and 010 = 010 / 7 and 2 = 2

Kim

--
· www.kensho.dk · psykologi og spiritualitet ·



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste