Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Khắc phục “Không thể chuyển đổi khi chuyển đổi giá trị varchar” khi cố gắng ghép nối trong SQL Server

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LOG () Ví dụ trong SQL Server

  2. Hoàn tất quy trình sao chép bảng từ cơ sở dữ liệu này sang cơ sở dữ liệu khác (Xuất-nhập) trong SQL Server

  3. Cách xác định khóa chính tự động tăng dần trong SQL Server

  4. Có thể lưu trữ giá trị của một cột đã chọn và sử dụng nó cho cột tiếp theo không?

  5. Cách tạo dữ liệu kiểm tra trong SQL Server