sql >> Databasteknik >  >> RDS >> Oracle

Hur gör man oracle-tabellnamn skiftlägesokänsliga?

[TL;DR] Det enklaste du kan göra är att aldrig använda dubbla citattecken runt objektnamn och bara låta Oracle hantera skiftlägeskänsligheten på sitt standardsätt.

Oracle-databaser är som standard skiftlägeskänsliga; Men de kommer också, som standard, att konvertera allt till versaler så att skiftlägeskänsligheten abstraheras från dig, användaren.

CREATE TABLE tEsT ( column_name NUMBER );

Sedan:

SELECT COUNT(*) FROM test;
SELECT COUNT(*) FROM Test;
SELECT COUNT(*) FROM TEST;
SELECT COUNT(*) FROM tEsT;

Kommer alla att ge samma utdata och:

SELECT * FROM USER_TABLES;

Utgångar:

TABLE_NAME
----------
TEST 

(Observera att tabellnamnet står i versaler).

Om du använder dubbla citattecken kommer Oracle att respektera din användning av skiftläge i tabellnamnet:

CREATE TABLE "tEsT" ( column_name NUMBER );

och:

SELECT * FROM USER_TABLES;

Utgångar:

TABLE_NAME
----------
TEST 
tEsT

(Obs:det finns nu två tabeller med namnet TEST och tEsT och Oracle har respekterat skiftlägeskänsligheten för den andra - den som skapats med citattecken).

(Observera:SELECT * FROM tEsT kommer att välja från den första tabellen, som har konverterats till versaler, men SELECT * FROM "tEsT" måste väljas från den andra även om frågorna är identiska förutom citattecken).




  1. UNION resultatet av flera lagrade procedurer

  2. Hur importerar man en csv-fil till MySQL-arbetsbänken?

  3. Hur returnerar jag ett element från string_to_array() i PostgreSQL 8.4?

  4. Returnera antalet dagar i en månad i MariaDB