Jaka jest poprawna składnia SQL do wstawiania wartości z apostrofem?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
Ciągle pojawia się błąd, ponieważ myślę, że apostrof po O jest końcowym znacznikiem wartości.
sql
sql-update
sql-insert
leora
źródło
źródło
Odpowiedzi:
Unikaj apostrofu (tzn. Podwoj znak pojedynczego cudzysłowu) w swoim SQL:
To samo dotyczy zapytań SELECT:
Apostrof lub pojedynczy cudzysłów to znak specjalny w SQL, który określa początek i koniec danych ciągu. Oznacza to, że aby użyć go jako części danych literału, potrzebny jest
escape
znak specjalny. W przypadku pojedynczej wyceny zazwyczaj osiąga się to poprzez podwojenie wyceny. (Dwa znaki pojedynczego cudzysłowu, nie podwójne cudzysłowy zamiast pojedynczego cudzysłowu.)Uwaga : powinieneś martwić się tym problemem tylko podczas ręcznej edycji danych za pomocą surowego interfejsu SQL, ponieważ pisanie zapytań poza programowaniem i testowaniem powinno być rzadkim zjawiskiem. W kodzie są techniki i frameworki (w zależności od stosu), które dbają o unikanie znaków specjalnych, wstrzyknięcie SQL itp.
źródło
Musisz tylko podwoić liczbę pojedynczych cytatów ...
źródło
Musisz uciec od apostrofu. W T-SQL jest to z podwójnym apostrofem, więc twoje
insert
zdanie staje się:źródło
Values
musi być zamknięty w nawiasy klamrowe (co czyni go tą samą odpowiedzią, co @JustinNiessner)Ponieważ pojedynczy cudzysłów służy do wskazania początku i końca łańcucha; musisz uciec.
Krótka odpowiedź polega na użyciu dwóch pojedynczych cudzysłowów -
''
- aby baza danych SQL zapisała wartość jako'
.Spójrz na użycie REPLACE do czyszczenia przychodzących wartości:
Chcesz sprawdzić
''''
i zastąpić je, jeśli istnieją w ciągu''''''
, aby uniknąć pojedynczego cudzysłowu.źródło
eduffy miał dobry pomysł . Właśnie dostał to wstecz w swoim przykładzie kodu. W JavaScript lub SQLite możesz zastąpić apostrof symbolem akcentu.
On (przypadkowo jestem pewien) umieścił symbol akcentu jako ogranicznik łańcucha zamiast zastępować apostrof w O'Brian. W rzeczywistości jest to przerażająco proste rozwiązanie w większości przypadków.
źródło
Znak apostrofu można wstawić, wywołując funkcję CHAR z wartością wyszukiwania tablicy ASCII apostrofu , 39. Wartości ciągu można następnie konkatenować razem z operatorem konkatenacji .
źródło
Poniższy kod SQL ilustruje tę funkcjonalność.
Wyniki
źródło
użyj podwójnych cudzysłowów wokół wartości.
źródło
He said, "Don't!"
używając pojedynczych cudzysłowów i / lub podwójnych cudzysłowów - co można zrobić:'He said, "Don''t!"'
lub"He said, ""Don't!"""
. Dodając nową odpowiedź do ustalonego pytania z zaakceptowanymi odpowiedziami, musisz podać nowe, pełne informacje. Używanie podwójnych cudzysłowów jest nowe - ale ograniczone do kilku DBMS; powinieneś starać się zidentyfikować co najmniej jednego z tych, którzy je akceptują.Zamiast tego użyj klawisza strzałki wstecz (na klawiszu ~);
źródło