2012-03-23 4 views
0

Pourquoi la requête SQLite3 suivante échoue avec l'erreur:SQLite3 Enchaînement requête échoue pour une raison

SQL Exception: near "||": syntax error

Ma Recherche:

UPDATE test 
SET money_links||='http://www.test.com', u_links||='http://www.test.com' 
WHERE u_tag='test2'; 

La structure du test de la table est:

CREATE TABLE IF NOT EXISTS test(u_tag TEXT PRIMARY KEY, money_links TEXT, u_links TEXT); 
+0

Qu'est-ce que le '||' pour ? Je ne l'ai jamais fait auparavant. – Dikei

+0

Il est pour la concaténation, donc il remplit la même fonction que '+ =' –

+2

Il échoue parce que ce n'est pas une syntaxe SQL ou SQLite. – Hogan

Répondre

1

Voulez-vous faire quelque chose comme ça? Je crains que SQL n'autorise pas une telle "concaténation incrémentale" comme certains langages de programmation réels.

2
UPDATE test 
SET money_links = money_links + 'http://www.test.com', u_links = u_links+ 'http://www.test.com' 
WHERE u_tag='test2'; 

UPDATE test 
SET money_links = ISNULL(money_links,'') + 'http://www.test.com', u_links = ISNULL(u_links,'') + 'http://www.test.com' 
WHERE u_tag='test2'; 
+0

merci pour la réponse :) La requête est maintenant en cours d'exécution mais elle ne combine pas les chaînes existantes dans money_links (ou u_links) avec la nouvelle chaîne, à la place la valeur dans money_links (et u_links) devient '0'. Que pensez-vous qu'il se passe? –

+0

Vous avez eu un null pour commencer - voir la nouvelle version – Hogan