2011-10-12 15 views
10

Mi chiedevo se esiste un modo per archiviare virgolette singole in SQL Server 2008. Sto creando diversi report e tutti questi report sono esattamente gli stessi, tranne che differiscono solo per i codici che sto selezionando. Ad esempio, un report utilizza i codici "abc", "def", "ghi" e un altro report utilizza i codici "jkl", "mno", "pqr". Stavo pensando di ridurre il numero di stored procedure che dovrò fare, potrei fare un parametro sul rapporto per scegliere quale tipo di rapporto eseguire. Sulla base di ciò, vorrei usare i codici corretti. Quindi stavo per memorizzare questi codici in una variabile varchar. Qui di seguito è la funzionalità che speravo:Memorizzazione di virgolette singole in variabile varchar SQL Server 2008

DECLARE @codes1 varchar, @codes2 varchar 
SET @codes1 = ''abc', 'def', 'ghi'' 
SET @codes2 = ''jkl', 'mno', 'pqr'' 

Poi, stavo per utilizzare la variabile varchar corretta in base al parametro l'utente sceglie. L'unico problema è l'impostazione delle variabili poiché la stringa avrà delle virgolette singole (la stringa verrà utilizzata in un'istruzione SQL "IN", il motivo per cui sono presenti le virgolette singole).

risposta

18

In questo modo. Sì, l'odio è corretto La terminologia corretta per questo è "fuga". Si può sfuggire una sola citazione ' raddoppiando in su ''

DECLARE @codes1 varchar(50), @codes2 varchar(50) 
SET @codes1 = '''abc'', ''def'', ''ghi''' 
SET @codes2 = '''jkl'', ''mno'', ''pqr''' 
+1

Aka, sfuggire al singolo ' '' raddoppiando lo '' ''. – Oded

+2

Avresti anche bisogno di una lunghezza nelle dichiarazioni delle variabili per evitare il troncamento a 1 carattere. –

+0

Grazie! Questo è esattamente ciò di cui avevo bisogno! Inoltre, grazie @ Martin per il commento aggiunto! Anche io ne avevo bisogno! –

0

cercare di evitare i valori hard-codifica. Crea una tabella per contenere questi valori e un modo per raggrupparli.

Table CodeGroups 
GroupNumber | Codes 
     1 | abc 
     1 | def 
     1 | ghi 
     2 | kkl 
     2 | mno 
     2 | pqr 

In questo modo l'utente deve solo selezionare GroupNumber = 1

si collega la tabella CodeGroups al tavolo con le stringhe di codice. Tutto quello che devi fare per aggiungere un altro codice è fare una voce in questa tabella e dargli un numero di gruppo.

0

Evitare il problema di qoute singolo solo raddoppiandolo.

Valore Varchar2 (10): = '' abc ''; --- Otterrai un errore.

Valore Varchare (10): = '' 'abc' ''; --- risolverà il tuo problema

0
      int varId = "1"; 
          String varItem = "Google's root"; 

          String strSQL = "INSERT INTO table(" 
              + "id," 
              + "item" 
              +")" 
              + "VALUES('" + varId 
              + "', '" + varItem 
              + "')"; 
+0

L'OP menzionato utilizzando SQL Server 2008: la soluzione è progettata per funzionare con SQL Server 2008? Inoltre, ti consigliamo di fornire una spiegazione della tua soluzione sopra di esso. –

Problemi correlati