Nếu bạn gặp lỗi Msg 245 có nội dung “ Chuyển đổi không thành công khi chuyển đổi giá trị varchar…” khi cố gắng thực hiện thao tác nối trong SQL Server, có khả năng bạn đang cố gắng nối một chuỗi và một số.
Làm điều này sẽ dẫn đến lỗi, do SQL Server cố gắng thêm chuỗi và số thay vì nối chúng.
Để khắc phục điều này, hãy chuyển đổi số thành chuỗi hoặc sử dụng một hàm như CONCAT()
hoặc CONCAT_WS()
để thực hiện nối.
Lỗi
Dưới đây là một ví dụ về mã gây ra lỗi:
SELECT 'Player ' + 456;
Kết quả:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value 'Player ' to data type int.
SQL Server cho rằng chúng tôi đang cố gắng thêm hai toán hạng và do đó sẽ gặp sự cố khi cố thêm chuỗi và số.
Giải pháp 1
Một cách để giải quyết vấn đề này là chuyển đổi rõ ràng số thành chuỗi:
SELECT 'Player ' + CAST(456 AS varchar(3));
Kết quả:
Player 456
Điều này khiến SQL Server hiểu rằng chúng tôi đang cố gắng nối các toán hạng thay vì thêm chúng.
Giải pháp 2
Một cách khác để làm điều đó là sử dụng một hàm như CONCAT()
để thực hiện nối:
SELECT CONCAT('Player ', 456);
Kết quả:
Player 456
CONCAT()
là một hàm chuỗi và vì vậy SQL Server giờ hiểu rằng chúng ta muốn nối hai chuỗi thay vì thêm hai số.
Ngoài ra, chúng tôi có thể sử dụng CONCAT_WS()
, cho phép chúng tôi chỉ định dấu phân tách để sử dụng giữa các đối số được nối.