Discussion:
Znak $
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Agata
2007-10-11 11:04:19 UTC
Permalink
Witam,
moje pytanie jest dosc proste, ale potrzbuje znac ogolna odpowiedz, niezalezne
od bazy dany: Czy znak $ jest "normalnym" znakiem jak litera lub cyfra, tzn.,
czy nazwa kolumny moze zawierac (scislej zaczynac sie $)?

Agata
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
dap
2007-10-11 11:37:59 UTC
Permalink
Post by Agata
Witam,
moje pytanie jest dosc proste, ale potrzbuje znac ogolna odpowiedz, niezalezne
od bazy dany: Czy znak $ jest "normalnym" znakiem jak litera lub cyfra, tzn.,
czy nazwa kolumny moze zawierac (scislej zaczynac sie $)?
Nie. W oracle nawet cyfry są niedozwolone.

dap
--
dap.polanski.biz
Thomas Olszewicki
2007-10-11 15:29:16 UTC
Permalink
Post by dap
Post by Agata
Witam,
moje pytanie jest dosc proste, ale potrzbuje znac ogolna odpowiedz, niezalezne
od bazy dany: Czy znak $ jest "normalnym" znakiem jak litera lub cyfra, tzn.,
czy nazwa kolumny moze zawierac (scislej zaczynac sie $)?
Nie. W oracle nawet cyfry są niedozwolone.
dap
--
dap.polanski.biz
Dap,
W oracle mozesz uzyc "" do nazw tables i column, wtedy to ograniczenie
mozna obejsc.
W praktyce nie uzywane.
Zobacz:
Connected to Oracle Database 10g Enterprise Edition Release
10.2.0.2.0
Connected as ...
SQL> CREATE TABLE "$5" ("$3" NUMBER);
Table created
SQL> CREATE TABLE "5$" ("3This" NUMBER);
Table created

HTH
Thomas
dap997
2007-10-14 12:51:16 UTC
Permalink
Post by Thomas Olszewicki
Post by dap
Post by Agata
Witam,
moje pytanie jest dosc proste, ale potrzbuje znac ogolna odpowiedz, niezalezne
od bazy dany: Czy znak $ jest "normalnym" znakiem jak litera lub cyfra, tzn.,
czy nazwa kolumny moze zawierac (scislej zaczynac sie $)?
Nie. W oracle nawet cyfry są niedozwolone.
dap
--
dap.polanski.biz
Dap,
W oracle mozesz uzyc "" do nazw tables i column, wtedy to ograniczenie
mozna obejsc.
W praktyce nie uzywane.
Connected to Oracle Database 10g Enterprise Edition Release
10.2.0.2.0
Connected as ...
SQL> CREATE TABLE "$5" ("$3" NUMBER);
Table created
SQL> CREATE TABLE "5$" ("3This" NUMBER);
Table created
Hej Thomas, tak masz rację - używając znaku " można wymusić w Oracle
posiadanie a nazwach tabel i kolumn znaków specjalnych.
Ja pytanie Agaty zrozumiałem o pytanie o generalną zasadę.

Bo znaki specjalne ($ w tym wypadku i liczby) można bez żadnych
problemów umieszczać w środku nazwy, ale nie na początku.

14:28:22 SQL> create table $test ( ala number) ;
create table $test ( ala number)
*
ERROR at line 1:
ORA-00911: invalid character


Elapsed: 00:00:00.00
14:29:27 SQL> create table ala$test (ala number) ;

Table created.

Elapsed: 00:00:00.02
14:29:39 SQL> create table 1test (ala number) ;
create table 1test (ala number)
*
ERROR at line 1:
ORA-00903: invalid table name


Elapsed: 00:00:00.00
14:29:52 SQL> create table ala1test (ala number) ;

Table created.

Zresztą użycie tej opcji jako rodzaju furtki do kompatybilności między
wieloma bazami jest bez sensu, bo przy każdym odwołaniu do tabeli trzeba
podawać ", co jest dodatkową wadą takie rozwiązania.

SQL> create table "$test2" ("$ala" number) ;

Table created.

SQL> create table "1table" ("1" number) ;

Table created.

SQL> select * from $test2 ;
select * from $test2
*
ERROR at line 1:
ORA-00911: invalid character


SQL> select * From "$test2" ;

no rows selected

SQL>

dap

pasman
2007-10-11 14:23:47 UTC
Permalink
Post by Agata
Witam,
moje pytanie jest dosc proste, ale potrzbuje znac ogolna odpowiedz, niezalezne
od bazy dany: Czy znak $ jest "normalnym" znakiem jak litera lub cyfra, tzn.,
czy nazwa kolumny moze zawierac (scislej zaczynac sie $)?
w postgresie się to udaje:
----------------
create table "$" ("$" text);
Zapytanie zostało wykonane w 157 ms i nie zwróciło żadnych wyników.
jerzy
2007-10-11 22:55:08 UTC
Permalink
Post by pasman
Post by Agata
Witam,
moje pytanie jest dosc proste, ale potrzbuje znac ogolna odpowiedz, niezalezne
od bazy dany: Czy znak $ jest "normalnym" znakiem jak litera lub cyfra, tzn.,
czy nazwa kolumny moze zawierac (scislej zaczynac sie $)?
----------------
create table "$" ("$" text);
Zapytanie zostało wykonane w 157 ms i nie zwróciło żadnych wyników.
mysql 5.0 też
create table $nowy (...

Query OK, 0 rows affected (0.03 sec)

mysql> show table;
+---------------------+
| Tables_in_nowa |
+---------------------+
| $nowy |
Loading...