2017-05-11 4 views
1

Ich schaffe dynamische SQL-Abfrage und variable Aussage mag hier istWie SQL-Variable übergeben Bedingung SQL Server 2012

meinen Code
DECLARE @DBname1 VARCHAR(200),@query VARCHAR(200),@tname VARCHAR(200); 
    SET @DBname1='core' 
    SET @tname = 'abc' 
SET @tname ='''+ '%' + @tname +'''+ '%' 
PRINT @tname 
SET @query= 'Select * FROM '[email protected]+ '.information_schema.tables where TABLE_NAME like '+ @tname 
PRINT @DBname1 
PRINT @query 
EXEC (@query) 

Problem ist, im nicht in der Lage Apostroph passieren mögen Variable vorbei mögen , oben Code anzeigen Fehlermeldung

die Datentypen varchar und varchar unvereinbar sind in der Modulo-Operator

Wenn ich den Code ändern zu

SET @tname ='%' + @tname + '%' 

dann das einzige Zitat aus Variable entfernt und werden TABLE_NAME like %test% und es nicht ausgeführt werden, da ein Apostroph fehlt.

Also ich möchte wissen, wie ich ein einzelnes Zitat zu SQL-Variable hinzufügen kann, bevor es an ähnliche Bedingung übergeben oder wie man das verkettet.

Antwort

2

Sie so tun sollten ...

DECLARE @DBname1 VARCHAR(200),@query VARCHAR(200),@tname VARCHAR(200); 
SET @DBname1='core' 
SET @tname = 'abc' 
PRINT @tname 
SET @query= 'Select * FROM '[email protected]+ '.information_schema.tables where TABLE_NAME like ''%'+ @tname + '%''' 
PRINT @DBname1 
PRINT @query 
EXEC (@query) 
+0

Dank es funktioniert für mich, die ich für diese von den letzten 2 Tage bin auf der Suche .. Danke noch einmal. –

+0

Froh darüber :) – Sankar

+0

@AmanSharma Akzeptieren Sie dies als Antwort, wenn es geholfen hat. – Sankar

1

Sie können auch CONCAT wie folgt verwenden:

SET @query= CONCAT('Select * FROM ', 
       @DBname1, 
       '.information_schema.tables where TABLE_NAME like ', 
       '''%', @tname, '%''')