Nếu bạn nhận được toán tử “ không tồn tại:số nguyên || số nguyên ”trong PostgreSQL, có thể là do bạn đang cố gắng nối hai số.
Nếu bạn thực sự muốn nối hai số, cách dễ nhất để khắc phục vấn đề này là truyền ít nhất một trong số chúng sang kiểu dữ liệu chuỗi.
Một cách khác để làm điều đó là sử dụng CONCAT()
chức năng.
Ví dụ về Lỗi
Dưới đây là một ví dụ về mã gây ra lỗi này:
SELECT 123 || 456;
Kết quả:
ERROR: operator does not exist: integer || integer LINE 1: SELECT 123 || 456; ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
Giải pháp 1
Dưới đây là một cách nhanh chóng để khắc phục sự cố này:
SELECT CAST(123 AS varchar(3)) || 456;
Kết quả:
123456
Mặc dù đúng là chúng tôi có thể truyền cả hai số thành một chuỗi, nhưng điều đó là không cần thiết. Miễn là một trong các toán hạng là một chuỗi, toán tử nối ống sẽ có thể nối chúng.
Giải pháp 2
Một cách khác để làm điều đó là sử dụng CONCAT()
chức năng để thực hiện nối:
SELECT CONCAT(123, 456);
Kết quả:
123456
Hàm này hoạt động trên các số mà không cần chuyển đổi bất kỳ số nào trong số chúng thành chuỗi. Hàm tự động thực hiện việc này (theo mặc định, nó nối các biểu diễn văn bản của các đối số của nó).