2014-02-19 50 views
0

我使用的是在SqlDataReader .NET 4.0級聯串引入寄生「N」字符

Dim wSQL = "Select (LastName + N',b' + FistName) as CustomerName from Customers" 
Dim wSQLDataReader as SQLDataReader = wSQLConnection.ExecuteReader(wSQL) 

[我使用的信b來表示一個空格字符。]

我很喜歡'SmithN,bJohn'

得到結果我得到同樣的結果,如果我從wSQL字符串中省略N個預選賽。

如果wSQL串改爲

"Select (LastName + N',bb' + FistName) as CustomerName from Customers" 

(用逗號以下兩個空格)。

我得到的結果'Smith,bbJohn'與兩個空格(當然),但N已經消失。

這是一個已知的.Net錯誤?是否有避免額外空間的已知工作?

上述兩個select語句運行在SQL Server Management Studio中的罰款。

+0

嘗試從因爲不敢用'「,選擇CONCAT(姓氏,N '',FistName)如客戶名稱tomers「' –

+0

什麼是wSQLConnection? SqlCommand有一個ExecuteReader函數,而不是SqlConnection(據我所知)。 –

回答

0

嘗試刪除前的+號N..you可能還需要姓氏後加上逗號。像這樣:

Dim wSQL = "Select (LastName N',b' + FistName) as CustomerName from Customers" 
Dim wSQLDataReader as SQLDataReader = wSQLConnection.ExecuteReader(wSQL) 

我有一個查詢類似(但更復雜的),也許它會幫助你它是:

SELECT 
'All Users' as QuestionOption, 
Stuff((SELECT N'; ' + email FROM users where email>=' ' FOR XML PATH(''),TYPE) 
.value('text()[1]','nvarchar(max)'),1,2,N'') as QuestionOptionValue 

它可能看起來像:

Dim wSQL = "Select 'CustomerName' as CustomerName, Stuff((SELECT LastName N', ' +  FirstName FROM CustomerName FOR XML PATH(''),TYPE).value('text()[1]','nvarchar(max)'),1,2,N'') as Customer_Full_Name