Ich habe eine dynamische Abfrage, in der ich uniqueidentifier verketten möchte, aber + & Operatoren unterstützen dies nicht, gibt es eine Möglichkeit, die ich uniqueneidentifier zu einer dynamischen Zeichenfolge verketten kann. Jede Probe oder jede Hilfe in dieser Hinsicht wird sehr geschätzt.Wie verkette ich uniqueidentifier in einer dynamischen Abfrage
Antwort
Haben Sie versucht, zuerst in einen String zu konvertieren oder ihn zu konvertieren, und dann concating?
CAST(NEWID() AS NVARCHAR(36))
Ich weiß, das ist alt, aber ich lief in diesem Beitrag versucht, die gleiche Sache, um herauszufinden, und das Problem war, dass ich nicht genug ist um meine eindeutige Kennung hatte. Ich hatte im Grunde:
'SELECT * FROM Interface WHERE ID = '' + CAST(@InterfaceID AS NVARCHAR(36)) + '' AND 1 = 1'
ich einen Fehler bekam sagen falsche Syntax in der Nähe von 00A (der erste Teil der GUID). Das Problem ist, dass dies wurde Parsen:
SELECT * FROM Interface WHERE ID = 00A3F5B5-C7B3-4128-B03A-EADE79129F40 AND 1 = 1
Durch die Änderung meiner Anfrage an:
'SELECT * FROM Interface WHERE ID = ''' + CAST(@InterfaceID AS NVARCHAR(36)) + ''' AND 1 = 1'
mit drei Apostrophe Ich habe:
SELECT * FROM Interface WHERE ID = '00A3F5B5-C7B3-4128-B03A-EADE79129F40' AND 1 = 1
Welche ist richtig.
Hoffe, dass hilft.
Ich habe versucht, es funktioniert nicht, falsche Syntax in der Nähe von Cast, oder konvertieren, wenn Konvertieren –
@ Yaser: "SELECT CAST (NEWID() AS NVARCHAR (36))". Bitte versuchen Sie selbst zu denken. – gbn
Sorry Liebe Freunde, meine Bedingung ist WHERE (CreatedBy = CAST (@p_CreatedBy AS NVARCHAR (100))) hier @CreatedBy ist ein Uniqueidentifier ich habe sogar versucht, es zu konvertieren, kein Ergebnis bekommen. Bitte help –