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

Jak se vypořádám s uvozovkami ' v SQL

Znak escape je ', takže budete muset nahradit uvozovku dvěma uvozovkami.

Například,

SELECT * FROM PEOPLE WHERE SURNAME='O'Keefe'

se stává

SELECT * FROM PEOPLE WHERE SURNAME='O''Keefe'

To znamená, že je pravděpodobně nesprávné dělat to sami. Váš jazyk může mít funkci pro únik řetězců pro použití v SQL, ale ještě lepší možností je použít parametry. Obvykle to funguje následovně.

Váš příkaz SQL by byl:

SELECT * FROM PEOPLE WHERE SURNAME=?

Poté, když jej spustíte, předáte „O'Keefe“ jako parametr.

Protože je SQL analyzován před nastavením hodnoty parametru, neexistuje způsob, jak by hodnota parametru změnila strukturu SQL (a je to ještě o něco rychlejší, pokud chcete stejný příkaz spustit několikrát s různými parametry).

Měl bych také zdůraznit, že zatímco váš příklad pouze způsobí chybu, otevíráte se mnoha dalším problémům tím, že správně neuniknete řetězcům. Viz http://en.wikipedia.org/wiki/SQL_injection pro dobrý výchozí bod nebo následující klasický xkcd komiks .



  1. SQL dotaz pro porovnání řetězce odděleného čárkami s řetězcem odděleným čárkami?

  2. Jaký je nejlepší způsob, jak spravovat data v PHP, MySQL atd.?

  3. Java Crosstab - připravený dotaz na příkaz

  4. Automaticky vyplnit textové pole v závislosti na rozbalovací hodnotě