sql >> Databáze >  >> RDS >> Oracle

Vložení řetězce s dvojitými uvozovkami do tabulky

Dvojitá uvozovka se používá k označení uvedeného identifikátoru , tj. název objektu, který se neskládá pouze z alfanumerických znaků, $ a # . Kromě toho se doporučuje, abyste to neudělali používat citované identifikátory. Toto je důvod vaší původní chyby ORA-00984. Oracle předpokládá, že "tes" je sloupec, nikoli řetězec, a nemůžete použít název sloupce v klauzuli VALUES příkazu INSERT, jak je vysvětleno v chybové zprávě .

Chcete-li vložit řetězec "tes" do tabulky, musíte zajistit, aby byla citována správně :

Jakýkoli znak může být součástí řetězce, takže pro vložení dvojitých uvozovek do tabulky jej musíte uzavřít do jednoduchých uvozovek.

insert into users (id, name, username) 
values (null, '"tes"', '"hello"');

Zde je SQL Fiddle demonstrovat.

Ještě jedna věc k poznámce. Uvádíte, že tento dotaz je generován automaticky, což znamená, že můžete být zranitelný vůči SQL injection. Velmi doporučuji přečíst si o proměnných vazby v Guarding Against SQL Injection .



  1. Jsou jedinečné indexy lepší pro výkon vyhledávání sloupců? (PGSQL a MySQL)

  2. Vytvořte cizí klíč v SQLite

  3. Jak získat průměr „středních“ hodnot ve skupině?

  4. Slučování/přetrvávání OpenJPA je velmi pomalé