Domanda

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

Il testo include una singola citazione ( ').

Come faccio fuga che?

Ho provato ad utilizzare due apici, ma mi ha buttato alcuni errori.

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

È stato utile?

Soluzione

le virgolette singole sono fuggiti da loro raddoppio , proprio come ci hai mostrato nel tuo esempio. Il seguente SQL illustra questa funzionalità. Ho testato 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.

Altri suggerimenti

Se la fuga il tuo preventivo singolo con un altro apostrofo non funziona per voi (come se non ha fatto per uno dei miei ultimi domande REPLACE()), è possibile utilizzare SET QUOTED_IDENTIFIER OFF prima della tua ricerca, allora SET QUOTED_IDENTIFIER ON dopo la query.

Ad esempio

SET QUOTED_IDENTIFIER OFF;

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

SET QUOTED_IDENTIFIER ON;
-- set OFF then ON again

Come su:

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

Il raddoppio della citazione dovrebbe hanno lavorato, quindi è strano che non ha funzionato per voi; tuttavia, in alternativa è l'utilizzo di caratteri doppi apici, al posto di quelle singole, attorno alla stringa. Cioè.,

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

2 modi per risolvere questo:


per ' si può semplicemente raddoppiarla nella stringa, per esempio select 'I''m happpy' -- will get: I'm happy


Per qualsiasi charactor non si è sicuri di: in SQL Server è possibile ottenere unicode qualsiasi char da select unicode(':')

Quindi questo caso si può anche select 'I'+nchar(39)+'m happpy'

Anche un'altra cosa da stare attenti è se sia o non sia in realtà memorizzato come ASCII classico '(ASCII 27) o Unicode 2019 (che è simile, ma non lo stesso).
Questo non è un grosso problema su inserti, ma può significare il mondo su seleziona ed aggiornamenti.
Se è il valore unicode poi sfuggire alla 'in una clausola WHERE (per esempio dove bla = '' comp' Lavoratori) restituirà come il valore che si sta cercando non è lì, se il 'in 'Comp del lavoratore' è in realtà il valore unicode.
Se l'applicazione client supporta senza chiave, così come copiare e incollare ingresso in base, potrebbe essere Unicode in alcune righe, e ASCII in altri!
Un modo semplice per verificare questo è di fare una sorta di open ended interrogazione che riporterà il valore che si sta cercando, e quindi copiare e incollare che in Notepad ++ o un altro editor di supporto unicode.
L'aspetto differente tra il valore ASCII e Unicode uno dovrebbe essere ovvio per gli occhi, ma se ci si china verso l'anale, verrà visualizzato come 27 (ASCII) o 92 (Unicode) in un editor esadecimale.

Questo dovrebbe funzionare: utilizzare una barra posteriore e mettere un doppio apice

"UPDATE my_table SET row =\"hi, my name's tim.\";

Questo dovrebbe funzionare

DECLARE @singleQuote CHAR 
SET @singleQuote =  CHAR(39)

insert into my_table values('hi, my name'+ @singleQuote +'s tim.')

Basta inserire una 'prima di tutto da inserire. Sarà come un carattere di escape in sqlserver

Esempio: Quando si dispone di un campo come, sto bene . tu puoi fare: AGGIORNAMENTO my_table SET fila = '' m bene.';

string value = "Abhishek's";

value = Replace(value,"'","''");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top