query - sintassi sql server



Come faccio a sfuggire a una singola offerta in SQL Server? (6)

Che ne dite di:

insert into my_table values('hi, my name'+char(39)+'s tim.')

https://src-bin.com

Sto cercando di insert alcuni dati di testo in una tabella in SQL Server 9.

Il testo include una citazione singola (').

Come posso evitarlo?

Ho provato a utilizzare due virgolette singole, ma mi ha gettato alcuni errori.

per esempio. insert into my_table values('hi, my name''s tim.');


Answer #1

Il raddoppio della citazione avrebbe dovuto funzionare, quindi è strano che non funzioni per te; tuttavia, un'alternativa utilizza caratteri doppia citazione, anziché singoli, attorno alla stringa. Vale a dire,

insert into my_table values("hi, my name's tim." );


Answer #2

Se l'escape del tuo preventivo singolo con un'altra quota singola non funziona per te (come non ha fatto per una delle mie recenti query REPLACE() ), puoi utilizzare SET QUOTED_IDENTIFIER OFF prima della query, quindi SET QUOTED_IDENTIFIER ON dopo la tua query.

Per esempio

SET QUOTED_IDENTIFIER OFF;

UPDATE TABLE SET NAME = REPLACE(NAME, "'S", "S");

SET QUOTED_IDENTIFIER ON;
-- set OFF then ON again


Answer #4

2 modi per ovviare a questo:

per ' puoi semplicemente raddoppiarlo nella stringa, ad esempio select 'I''m happpy' -- will get: I'm happy

Per qualsiasi charactor di cui non sei sicuro: in sql server puoi ottenere un unicode di char select unicode(':')

In questo caso puoi anche select 'I'+nchar(39)+'m happpy'


Answer #5

Le virgolette sono sfuggite raddoppiandole , proprio come ci hai mostrato nell'esempio. Il seguente codice SQL illustra questa funzionalità. L'ho provato su SQL Server 2008:

DECLARE @my_table TABLE (
    [value] VARCHAR(200)
)

INSERT INTO @my_table VALUES ('hi, my name''s tim.')

SELECT * FROM @my_table

risultati

value
==================
hi, my name's tim.




single-quotes