/ 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
Kode sin egen SELECT ... WHERE?
Fra : Stefan Kristensen


Dato : 21-10-03 13:19

Hej NG.

Jeg er ved at konvertere noget M$ SQL til DB2
Jeg har to spørgsmål, spm jeg håber I kan hjælpe mig med:
Jeg er løbet ind i en begrænsning, der gør at jeg ikke kan lave en SELECT
.... WHERE hvor feltet jeg select'er længere end 255 karakterer.
Er det en SQL standard, der begrænser længed af felter til 255 karakterer?
Kan man i en stored procedure lave en løkke, der løber alle records i gennem
og ser om den angivne værdi allerede findes?

mvh
Stefan



 
 
Nikolaj Hansen (22-10-2003)
Kommentar
Fra : Nikolaj Hansen


Dato : 22-10-03 23:47

Hejsa,

Hvis det er navnet på feltet kan det sagtens ske at være 255 karakterer -
det burde vel også være mere end rigeligt for de fleste skulle man mene?

Hvis det er indholdet af din table column så plejer grænsen for indholdet at
ligge på omkring 2 gigabyte på et 32 bits system på en tekst streng og et
eller andet totalt astronomisk på 64 bit.

- Nikolaj



Gunnar S. Müller (15-11-2003)
Kommentar
Fra : Gunnar S. Müller


Dato : 15-11-03 13:06

> Jeg er løbet ind i en begrænsning, der gør at jeg ikke kan lave en SELECT
> ... WHERE hvor feltet jeg select'er længere end 255 karakterer.


Hej Stefan
DB2 har en størrelse der kaldes VARCHAR, og den "knækker" ved netop 255
tegn. Jeg er ikke sikker på om det er dér problemet ligger, fordi jeg har
lidt vanskeligt ved at forstå dit spørgsmål, hvad mener du egentligt?

.... WHERE hvor KOLLONNELÆNGDEN AF feltet jeg select'er ER længere end 255
karakterer.
Altså, feltet i tabellen du indlæser er større end 255 tegn. Her er
problemet "bare" at sørge for at den hostvariabel du indlæser værdien til/i
er stor nok.

.... WHERE XXX = 'Tekst der fylder mere end 255 tegn ... der først slutter
nu'
Her "knækker filmen" for DB2, fordi DB2 altid pr. definition antager at
faste tekststrenge er af typen VARCHAR, som max. kan være 255 tegn. Det er
der dog en simpel løsning på - split din søgeværdi op i to eller flere
strenge og conate'ner dem:

.... WHERE XXX = 'De første 255 tegn' || 'De næste 255 tegn' || 'Og så
resten...'

Den sammme teknik kan også bruges ved INSERT, UPDATE osv.

Håber det kan bruges
Gunnar S. Müller



Stefan Kristensen (17-11-2003)
Kommentar
Fra : Stefan Kristensen


Dato : 17-11-03 12:31

> Hej Stefan
> DB2 har en størrelse der kaldes VARCHAR, og den "knækker" ved netop 255
> tegn. Jeg er ikke sikker på om det er dér problemet ligger, fordi jeg har
> lidt vanskeligt ved at forstå dit spørgsmål, hvad mener du egentligt?
Jeg har en tabel der heder Transactions med et felt der heder
Transaction.Transaction er defineret som varchar(7000).
Inden jeg lægger en ny transaction i tabellen, vil jeg se, om den eksisterer
i forvejen.
Det gør jeg ved at tælle forekomsten af den nye transaktion:
SELECT COUNT([Transaction])
WHERE [Transaction] = v_NyTransaktion
Men i DB2 må man ikke lave en SELECT...WHERE hvor WHERE feltet er mere en
255 karakterer.

mvh
Stefan



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

Månedens bedste
Årets bedste
Sidste års bedste