Avatar billede lbaad Nybegynder
11. januar 2005 - 10:33 Der er 6 kommentarer og
5 løsninger

Anden karakter for bestemte tegn

Hejsa

Jeg sidder med et "sjovt" problem.
Jeg skal køre en SQL forespørgsel, men det går ikke godt da der er & og ' i de navne, som jeg gerne vil have sorteret fra.

Er der en måde, at erstatte dem på, så jeg ikke bliver promptet for variabler, for det er jo det, som Oracle tror & står for.

Håber i kan hjælpe
Lars
Avatar billede senj Nybegynder
11. januar 2005 - 10:38 #1
Sådan her måske?

select  'anders' as name
      ,'an'||'&'||'ders' as name1
      ,'anders''' as name2
from dual
Avatar billede teepee Nybegynder
11. januar 2005 - 10:53 #2
Som senj skriver skal du bruge to plinger '' inde i en tekststreng
eks. 'Toys 'r' us' => 'Toys ''r'' us'
Med hensyn til & så gætter jeg på at problemet er i sql*plus?
Prøv at skrive SET DEFINE OFF
eller gå op i valgmuligheder/options...miljø og skift & til noget andet eller
skriv eks. SET DEFINE %
Avatar billede miracon Nybegynder
11. januar 2005 - 10:54 #3
Skriv flg. før du kører forespørgslen:
set scan off
Avatar billede lbaad Nybegynder
11. januar 2005 - 10:55 #4
takker, prøver det lige
Avatar billede lbaad Nybegynder
11. januar 2005 - 11:44 #5
Nåh det virker så ikke helt efter planen.
Når jeg har sat alle mine navne ind i en .sql fil, og kører det fra SQLPLUSW, så kommer der bare en linie frem, hvor der står 4862, så kan jeg trykke ENTER, og så kommer prompten igen, og intet sker.

Hvad kan det skyldes??
Jeg har sat set define off og set scan off
Avatar billede Slettet bruger
11. januar 2005 - 11:50 #6
du skal afslutte programmet med en linie med tegnet '/':

...
end;
/
Avatar billede miracon Nybegynder
11. januar 2005 - 11:56 #7
end; gælder kun for PL/SQL.
Det her er SQL. Så det er nok med /
Avatar billede miracon Nybegynder
11. januar 2005 - 12:02 #8
' kan erstattes med chr(39)
& kan erstattes med chr(38)

En select kan så se således ud:

select x from y
where instr(x,chr(38)) = 0
and  instr(x,chr(39)) = 0
Avatar billede lbaad Nybegynder
11. januar 2005 - 12:03 #9
nu kommer der bare en sql-fejl istedet:
ORA-01756: streng i anførselstegn er ikke korrekt afsluttet

Scriptet ser således ud:
set define off
set scan off

select * from bc_company where name not in
(''Copenhagen Malmö Port Stevedoreafd.'' ,
''Magasin Ejendomme A/S'' ,
''Københavns Fondsbørs A/S'' ,
....)
/

er der nogen der kan sige mig, hvad der er galt.
Avatar billede miracon Nybegynder
11. januar 2005 - 12:10 #10
Brug enkelt-plinger:

select * from bc_company where name not in
('Copenhagen Malmö Port Stevedoreafd.' ,
'Magasin Ejendomme A/S' ,
'Københavns Fondsbørs A/S' ,
....)
/
Avatar billede lbaad Nybegynder
11. januar 2005 - 15:09 #11
Tak for hjælpen.
Desværre var der ingen af svarene der hjalp, men jeg fik nogle gode fif, så points går til jer alle 3.

Jeg sammenlignede på telefonnumre istedet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Saab Danmark A/S

Senior Software Developer

Udviklings- og Forenklingsstyrelsen

Scrum Master

Politiets Efterretningstjeneste

Udviklingsorienteret Service Level Manager til PET

PensionDanmark

Business Tester