2012-12-27 76 views
10

Tôi đã kế thừa ứng dụng C# mà tôi đã chuyển đổi sang vb. Tôi nhận được một lỗi mà theo như tôi có thể thấy không có gì để làm với chuyển đổi.Kiểu dữ liệu SQL Server nvarchar và varchar là lỗi không tương thích

Tôi có một câu lệnh SQL mà là ....

SELECT ResolverID AS ddlValue, ResolverTeam & ' | ' & ResolverPerson AS ddlText 
FROM  dbo.TblResolvers 
ORDER BY ResolverTeam, ResolverPerson; 

Khi điều này chạy tôi nhận được lỗi:

The data types nvarchar and varchar are incompatible in the boolean AND operator.

Trong bảng cả ResolverTeamResolverPerson được quy định như (nvarchar(255) , null)

Tại sao tôi gặp phải lỗi này?

+3

Tại sao nó đặc biệt nói về 'varchar' là vì' '| ''là một' varchar' chữ. Nếu bạn muốn một 'nvarchar' chữ, sử dụng' N '| ''. –

Trả lời

14

Hãy thử thay thế '&' cho '+' ... bằng giao diện của những gì bạn đang cố gắng làm là ghép 2 cột ... có một số điều bạn cần phải cẩn thận về: nvarchar là tăng gấp đôi kích thước của varchar thường xuyên, có nghĩa là có chars tại nvarchar mà không có trong bảng varchar ...

+0

Cảm ơn tất cả những ai đã trả lời ..... như một phần của chuyển đổi của tôi từ c sharp sang vb tôi đã thay thế + bằng & như nhà phát triển ban đầu không sử dụng trình tạo chuỗi và có nhiều trường hợp chuỗi = string + "foo" hoặc thậm chí chuỗi = string + x (trong đó x là một số). Trong khi đi qua và thay thế chúng tôi vô tình thay thế + trong câu lệnh SQL mà tôi không nên có ..... Rất cám ơn. – Mych

2

Bạn nên sử dụng + cho chuỗi concatentation:

SELECT 
    ResolverID AS ddlValue, 
    ResolverTeam + ' | ' + ResolverPerson AS ddlText 
FROM dbo.TblResolvers 
Order By ResolverTeam, ResolverPerson; 

Why am I getting this error?

Bạn đã nhận được lỗi đó, vì & operator, đó là Bitwise AND.

2

Để nối chuỗi trong MSSQL bạn nên sử dụng +

SELECT ResolverID AS ddlValue, 
    ResolverTeam + ' | ' + ResolverPerson AS ddlText 
    FROM dbo.TblResolvers Order By ResolverTeam, ResolverPerson; 
1

Đây có phải là một nỗ lực nối? ResolverTeam & ' | ' & ResolverPerson

& là toán tử bitwise AND, thay thế bằng + và xem điều gì sẽ xảy ra.

Các vấn đề liên quan