Toon posts:

[oracle] zoeken datatype LONG

Pagina: 1
Acties:
  • 118 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo,

we hebben een oracle database met in een paar tabellen het datatype LONG.
Het is nu nodig dat we kunne zoeken in deze velden, maar een
SELECT field FROM table
WHERE '%test%' like (field)

levert de foutmelding 'inconsistent datatypes' op.

We hebben er al aan gedacht om voor elke long een VARCHAR-veld te maken, en deze te vullen met de inhoud van de LONG. Dit heeft dan weer als nadeel de beperktere veld-lengte van de varchar.

Is er misschien een andere oplossing?

edit:

sorry van de vage topic-titel, hoe verander ik deze in bijv '[oralce] zoeken datatype LONG '?

Het probleem is dat bij de conversie van oracle7 naar oracle 9 sommige tekens (waaronder het euro-teken) niet goed geconverteerd worden. Dit heeft te maken met een verschil in character-sets.
De characterset van oracle7 kunnen we niet gebruiken in oracle 9.
Door na de conversie een script te draaien die alle verkeerd geconverteerde tekens corrigeerd willen we dit oplossen.

[ Voor 36% gewijzigd door Verwijderd op 06-10-2003 12:28 . Reden: topic? ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Een LIKE kan je enkel gebruiken met alfanumerieke data-types.

Een numerieke waarde sla je niet op in een alfanumeriek veld. Dat zorgt alleen maar voor problemen.
Waarom wil je trouwens bv alle records ophalen waarvoor geldt dat dat numeriek veld bv. '100' bevat?

Owja, en verzin eens een betere titel. Dan kunnen we die aanpassen.

[ Voor 76% gewijzigd door whoami op 06-10-2003 12:19 ]

https://fgheysels.github.io/


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-08 21:00

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op 06 October 2003 @ 12:16:
Hallo,

we hebben een oracle database met in een paar tabellen het datatype LONG.
Het is nu nodig dat we kunne zoeken in deze velden, maar een
SELECT field FROM table
WHERE '%test%' like (field)

levert de foutmelding 'inconsistent datatypes' op.

We hebben er al aan gedacht om voor elke long een VARCHAR-veld te maken, en deze te vullen met de inhoud van de LONG. Dit heeft dan weer als nadeel de beperktere veld-lengte van de varchar.

Is er misschien een andere oplossing?
Eeh, in een varchar (of varchar2) kan je volgens mij meer tekens kwijt dan dat het grootste getal van een long lang is?

"where '%test%' like veldje " werkt inderdaad alleen op velden van een stringtype. Je zult het dan echt om moeten zetten naar een varchar of varchar2, tenzij je kan aangeven op wat voor manier je wilt zoeken in een getal en er een andere oplossing is te verzinnen.

edit: whoami was me voor..

[ Voor 5% gewijzigd door Creepy op 06-10-2003 12:20 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-08 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

WHERE '%test%' like (field)
moet dat sowieso niet WHERE (field) LIKE '%test%' zijn?

(en formuleer trouwens eens een goede topictitel) done :)
sorry van de vage topic-titel, hoe verander ik deze in bijv '[oralce] zoeken datatype LONG '?
dat kunnen alleen mods ;)

[ Voor 34% gewijzigd door .oisyn op 06-10-2003 12:31 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
bedankt korenwolf, dat ik daar niet aan gedacht heb !
8)7

de rest ook bedankt voor de snelle replys.

[ Voor 30% gewijzigd door Verwijderd op 06-10-2003 12:33 ]


  • mkleinman
  • Registratie: Oktober 2001
  • Laatst online: 17-08 22:48

mkleinman

8kWp, WPB, ELGA 6

Wat je ook kan doen is ipv LONG columns een CLOB gebruiken.. in de package dbms_lob zit de functie instr waar je ook je like mee kan coden.

Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

.oisyn schreef op 06 October 2003 @ 12:21:
moet dat sowieso niet WHERE (field) LIKE '%test%' zijn?
Beide varianten zijn geldig.

Behalve dan dat ie alleen de rechterhelft evalueert met de %jes enzo. Althans, voor mysql geldt dat :o
Hier op got gebruiken we het bijv voor maildomein-bans, dat je dus %.tmfweb.nl opslaat en door dan bijv zoiets te testen:
select domain from mailban where 'bladiebla.tmfweb.nl' LIKE domain

krijg je dan heel leuk dat tmfweb.nl domein terug.

Ik kan me wel voorstellen dat het in dit geval fout is trouwens ;)

Btw, oracle's long is niet hetzelfde als een C-long :P
"LONG
Character data of variable length up to 2 gigabytes, or 231 -1 bytes."

[ Voor 11% gewijzigd door ACM op 06-10-2003 13:38 ]

Pagina: 1