質問

アポストロフィに値を挿入する正しいSQL構文は何ですか?

Insert into Person
  (First, Last)
Values
  'Joe',
  'O'Brien'

oが値の終了タグであると思われるアポストロフィがあると思うので、エラーが発生し続けます。

役に立ちましたか?

解決

sqlのアポストロフィ(つまり、単一の引用文字を2倍にする)を脱出します。

INSERT INTO Person
    (First, Last)
VALUES
    ('Joe', 'O''Brien')
              /\
          right here  

選択したクエリにも同じことが当てはまります。

SELECT First, Last FROM Person WHERE Last = 'O''Brien'

アポストロフィ、または単一の引用は、文字列データの開始と終了を指定するSQLの特別なキャラクターです。これは、あなたがする必要がある文字通りの文字列データの一部としてそれを使用することを意味します escape 特別なキャラクター。 1回の引用では、これは通常、見積もりを2倍にすることで達成されます。 (単一の引用ではなく、二重引用符ではなく、2つの単一の引用文字。)

ノート: :開発とテスト以外のクエリを書くことはまれな発生であるため、生のSQLインターフェイスを介して手動でデータを編集する場合にのみ、この問題について心配する必要があります。コードには、特殊文字を逃れるための世話をするテクニックとフレームワーク(スタックによって異なります)があります。 SQLインジェクション, 、など

他のヒント

あなたは単一の引用を2倍にする必要があります...

insert into Person (First, Last)
values ('Joe', 'O''Brien')

アポストロフィから逃れる必要があります。の t-sql これは二重のアポストロフィであるので、あなたのものです insert 声明は次のようになります

Insert into Person
(First, Last)
Values
'Joe', 'O''Brien'

単一の引用が文字列の開始と終了を示すために使用されるためです。あなたはそれを逃れる必要があります。

簡単な答えは、2つの単一の引用を使用することです - '' -SQLデータベースが値を次のように保存するために '.

交換を使用して着信値を消毒することを検討してください。

あなたはチェックしたいです '''', 、およびそれらが文字列に存在する場合にそれらを交換します '''''' 唯一の単一の引用から逃れるため。

エドフィーは良い考えを持っていました. 。彼は彼のコードの例でそれを後方に手に入れました。 JavaScriptまたはSQLiteのいずれかで、アポストロフィをアクセントシンボルに置き換えることができます。

彼は(誤って私が確信しています)オブリアンのアポストロフィを置き換える代わりに、弦のデリミッターとしてアクセント記号を置きました。これは実際、ほとんどの場合に非常に単純なソリューションです。

アポストロフィの文字は、呼び出すことで挿入できます char アポストロフィの機能 ASCIIテーブルルックアップ 値、39。文字列値は 連結演算子.

Insert into Person
  (First, Last)
Values
  'Joe',
  concat('O',char(39),'Brien')

単一の引用は、それらを2倍にすることで逃げます,

次のSQLは、この機能を示しています。

declare @person TABLE (
    [First] nvarchar(200),
    [Last] nvarchar(200)
)

insert into @person 
    (First, Last)
values
    ('Joe', 'O''Brien')

select * from @person

結果

First   | Last
===================
Joe     | O'Brien

値の周りに二重引用符を使用します。

insert into Person (First, Last) Values("Joe","O'Brien")

代わりにバックティック(〜キー)を使用します。

`O'Brien`
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top