Avatar billede tylon Nybegynder
25. oktober 2000 - 21:41 Der er 14 kommentarer

Insert into (med reserverede ord)

Jeg skal udføre flg.
-------------------------------------------
insert into karakter (navn,efternavn,level)
values(\"Jens\",\"Hansen\",1)
-------------------------------------------
Problemet er at \"level\" er et reserveret ord, hvordan kan jeg udføre det.

Jeg har prøvet at skrive \"karakter.level\", så klagede den over at den ikke kan finde feltet \"karakter.level\".
Avatar billede razor Nybegynder
25. oktober 2000 - 21:43 #1
du kan da heller ikke oprette tabellen hvis level er et reserveret ord ?
Avatar billede sjensen Nybegynder
25. oktober 2000 - 21:47 #2
Prøv med

insert into karakter.k (k.navn,k.efternavn,k.level)
values(\"Jens\",\"Hansen\",1)

Hvis det ikke virker så prøv

insert into karakter as k (k.navn,k.efternavn,k.level)
values(\"Jens\",\"Hansen\",1)

og hvis heller ikke, så bør du nok overveje at ændre tabellens felt til \"niveau\" istedet for \"level\"

Avatar billede buhl Nybegynder
25. oktober 2000 - 22:05 #3
Brug [] omkring reserverede ord som samtidigt benyttes som kolonne navne. Disse kan være [date],[level] og andre.

Prøv derfor

Insert Into karakter (navn,efternavn,[level])
values(\"jens\",\"Hansen\",1)

:) Buhl
Avatar billede buhl Nybegynder
25. oktober 2000 - 22:11 #4
Der var jeg vist lige hurtig nok. Hvorvidt [] virker i MySQL ved jeg desværre ikke, men i Access skulle den være god nok...
Avatar billede steffen Nybegynder
25. oktober 2000 - 22:12 #5
Sjovt, det er overhovedet ikke noget problem med sådan en ting her -

INSERT INTO test (level) VALUES (\'2\')

virker fx fint.

Bare en strøbemærkning.
Avatar billede steffen Nybegynder
25. oktober 2000 - 22:20 #6
Prøver jeg et andet reserveret ord, kan jeg ikke engang oprette tabellen:

CREATE TABLE test2 (
  by int(11)
);

Såeh - hvordan dit problem egentligt er opstået kan jeg ikke spore eller eftergøre - men det er da interessant - gider du poste et par detaljer så vi kan få syn for sagen?
Avatar billede jacobve Nybegynder
25. oktober 2000 - 23:06 #7
ja, hvordan er det lykkes dig at oprette kolonnen \'level\' ???
Avatar billede erikjacobsen Ekspert
25. oktober 2000 - 23:35 #8
Så vist jeg kan se i min dokumentation for MySql (det er godt nok til en lidt
halvgammel version) er level ikke reserveret. Men de skriver også at pga. deres
parseteknik (yacc) kan man ikke lave krumspring med de reserverede ord, som f.eks.
at sætte [] rundt om. Men det er jo intet problem, man kan jo bare kalde dem noget andet,
og som steffen så smukt udtaler: tabellen kan slet ikke oprettes med disse navne.

Jeg tror dit \"level\" problem er et andet end du tror. Kan vi få flere oplysninger, så kan
vi helt sikkert også løse det.
Avatar billede jbn86 Nybegynder
26. oktober 2000 - 16:33 #9
Du kan da ikke oprette et en kollonne med et reserveret ord som navn. Brug derfor f.eks. \"level-eteellerandet\"!
Avatar billede cbolvig Nybegynder
26. oktober 2000 - 22:34 #10
Jeg er forbløffet over eksperterne på andre databaser som udtaler sig om MySQL og eksperterne på MySQL som ikke prøver spørgsmålet af.

Hvis man vil have hjælp må man give så mange relevante informationer som muligt. For eksempel: Hvilken MysQL version er der tale om og hvilket OS bruger du.

MySQL er i en rivende udvikling og nærmer sig mere og mere ANSI92 og ANSI99, hvorfor det ikke er ligegyldigt om det er en ældre version her er tale om. Dog tror jeg ikke at nærværende problem er versionsafhængigt.

Når jeg har skrevet dette rebooter jeg i Win98 miljø og afprøver det samme herunder, men jeg er på forhånd ret sikker på at der ikke er problemer.

Prøv at følge og selv afprøve de her skærmdumps fra kommandolinieprompten $.
________________________________________________

$ mysqladmin version
mysqladmin  Ver 8.9 Distrib 3.23.26-beta, for pc-linux-gnu on i686
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version        3.23.26-beta
Protocol version    10
_______________________________________________


$ echo \'CREATE TABLE karakter (navn text, efternavn text,level text)\' |mysql test
________________________________________________


$ mysqlshow test karakter
Database: test  Table: karakter  Rows: 1
+-----------+------+------+-----+---------+-------+---------------------------------+
| Field    | Type | Null | Key | Default | Extra | Privileges                      |
+-----------+------+------+-----+---------+-------+---------------------------------+
| navn      | text | YES  |    |        |      | select,insert,update,references |
| efternavn | text | YES  |    |        |      | select,insert,update,references |
| level    | text | YES  |    |        |      | select,insert,update,references |
+-----------+------+------+-----+---------+-------
+---------------------------------+
__________________________________________________

$ echo \'insert into karakter (navn,efternavn,level) values(\"Jens\",\"Hansen\",1)  \' |mysql test

__________________________________________________

$ echo \'select * from karakter \' |mysql test -t -v
--------------
select * from karakter
--------------

+------+-----------+-------+
| navn | efternavn | level |
+------+-----------+-------+
| Jens | Hansen    | 1    |
+------+-----------+-------+
_________________________________________________

Med andre ord \'level\' er ikke et reserveret ord i MySQL og det spørgeren vil kan godt lade sig gøre.

MySQL har en glimrende 617 siders manual pr 9-10-00.

Prøv igen.

Avatar billede cbolvig Nybegynder
02. november 2000 - 22:49 #11
Jojo, den var god nok i WIN98, se her. Kopier følgende linier til en \'bat fil.

echo  Udvis omtanke inden næste linie !!!

ohce  DROP TABLE IF EXISTS karakter |mysql -t -v test

mysqlshow -V

echo CREATE TABLE karakter (navn text, efternavn text,level int) |mysql -t -v test

mysqlshow test karakter

echo insert into karakter (navn,efternavn,level) values(\"Jens\",\"Hansen\",1) |mysql -t -v test

echo select * from karakter  |mysql -t -v test

rem slut


og skærmdumps herunder:


C:\\test>mysqlshow -V
C:\\MYSQL\\BIN\\MYSQLS~1.EXE  Ver 8.2 Distrib 3.23.26-beta, for Win95/Win98 (i32)

C:\\test>echo CREATE TABLE karakter (navn text, efternavn text,level int) |mysql -t -v test
--------------
CREATE TABLE karakter (navn text, efternavn text,level int)
--------------


C:\\test>mysqlshow test karakter
Database: test  Table: karakter  Rows: 0
+-----------+---------+------+-----+---------+-------+---------------------------------+
| Field    | Type    | Null | Key | Default | Extra | Privileges                      |
+-----------+---------+------+-----+---------+-------+---------------------------------+
| navn      | text    | YES  |    |        |      | select,insert,update,references |
| efternavn | text    | YES  |    |        |      | select,insert,update,references |
| level    | int(11) | YES  |    |        |      | select,insert,update,references |
+-----------+---------+------+-----+---------+-------+---------------------------------+

C:\\test>echo insert into karakter (navn,efternavn,level) values(\"Jens\",\"Hansen\",1) |mysql -t -v test
--------------
insert into karakter (navn,efternavn,level) values(\"Jens\",\"Hansen\",1)
--------------


C:\\test>echo select * from karakter  |mysql -t -v test
--------------
select * from karakter
--------------

+------+-----------+-------+
| navn | efternavn | level |
+------+-----------+-------+
| Jens | Hansen    |    1 |
+------+-----------+-------+

C:\\test>
Avatar billede steffen Nybegynder
16. november 2000 - 20:11 #12
Husk at lukke spørgsmålet ved lejlighed.
Avatar billede solle Nybegynder
07. august 2002 - 18:25 #13
CREATE TABLE test2 (
  ´by´ int(11)
);
Avatar billede c Nybegynder
01. juli 2003 - 11:09 #14
Hejsa!

lagde lige mærke til at du forsøger at gemme værdien for level som et tal. Det virker også fint nok, hvis du har valgt typen varcah (mener jeg) men har du forsøgt med:
INSERT INTO karakter (navn,efternavn,level) values (\"Jens\",\"Hansen\",\"1\")
?
Det ville også være rart at vide lidt til dine datatype mv.

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