fıkra

2013-07-22 24 views
5

Ben RAW sql iki değişken ilan ettiler SQL Dize CONCAT nasıl My SQL sorgusu fıkra

DECLARE @str nvarchar(max), @str1 nvarchar (max); 

SET @str = " AND (c.BondSales_Confirmed <> -1)"; 

SET @str1 = " AND (c.BondSales_IssueType = 'REGULAR')"; 

olduğunu

: Burada

SELECT * From t_BondSales Where (BondSales_cType <> 'Institute') " + str1 + str " 

aşağıdaki hatayı alıyorum:

Error: SQL Problems: Incorrect Syntax near "+ str1 + str"

Herhangi biri olabilir Dize nerede feragat etmeyiniz hakkında doğru sözdizimi ile bana yardımcı olabilir?

DECLARE 
     @str NVARCHAR(MAX) 
    , @str1 NVARCHAR (MAX); 

SELECT 
     @str = ' AND c.BondSales_Confirmed != -1' 
    , @str1 = ' AND c.BondSales_IssueType = ''REGULAR'''; 

DECLARE @SQL NVARCHAR(MAX) 

SELECT @SQL = ' 
SELECT * 
FROM t_BondSales 
WHERE BondSales_cType != ''Institute''' 
    + @str 
    + @str1 

PRINT @SQL 
EXEC sys.sp_executesql @SQL 
+2

Bu da değişken isimlerin önce "@" sembolü sol çünkü sadece hata gösteriyordu sorguyu seç. – Novice

cevap

9

bu bir deneyin. Eğer sağlıklı uygulamak istemiyorsanız sadece null değeri iletin bu

declare @BondSales_Confirmed int 
declare @BondSales_IssueType varchar(100) 

SELECT * From t_BondSales Where (BondSales_cType <> 'Institute') 
AND (c.BondSales_Confirmed <> @BondSales_Confirmed or @BondSales_Confirmed is null) 
AND (c.BondSales_IssueType = @BondSales_IssueType or @BondSales_IssueType is null) 

gibi kodunu değiştirmek için Yani seni öneririm

www.sommarskog.se/dynamic_sql.html bu yazı okumak için emin olun BondSales_Confirmed ve BondSales_IssueType

+0

Harika Yanıt! Çok teşekkürler @Devart –

+0

Hoşgeldin @Saquibul Islam Waheed :) – Devart

+0

Bana başka bir son şey önerebilir misiniz: Bu String birleştirmesi Jasper (iReport) içinde destekleniyor mu? @Devart –

1

değerlerle birlikte sütun adları geçerken SQL Enjeksiyon tabidir -

+0

Bu aslında benim amacım değil. Teşekkürler @Madhivanan –

4

sütunlarına çok kolay! MySQL kullanımı CONCAT() işlevi:

SELECT * FROM tbl_person WHERE CONCAT(first_name,' ',last_name) = 'Walter White'; 

ancak bunu yapar mysql değil eser:

SELECT * FROM tbl_person WHERE first_name+' '+last_name = 'Walter White'; 
+0

'CONCAT (first_name, '', last_name) = ''' bir de JPA TypedQuery ile çalışır. Yardımın için teşekkürler. – alsobubbly