|
| 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
| |
|
|