2016-07-22 24 views
5

Tôi có một listings bảng tiêu chuẩn trên bảng chuyển đỏ với tất cả varchars (do nạp vào cơ sở dữ liệu)Thêm LIMIT sửa lỗi "Chữ số không hợp lệ, Giá trị N" trong Amazon Redshift. Tại sao?

Truy vấn này (giản thể) mang lại cho tôi lỗi:

with AL as (
    select 
    L.price::int as price, 
    from listings L 
    where L.price <> 'NULL' 
    and L.listing_type <> 'NULL' 
) 
select price from AL 
where price < 800 

và các lỗi:

----------------------------------------------- 
    error: Invalid digit, Value 'N', Pos 0, Type: Integer 
    code:  1207 
    context: NULL 
    query:  2422868 
    location: :0 
    process: query0_24 [pid=0] 
    ----------------------------------------------- 

Nếu tôi loại bỏ các điều kiện where price < 800, truy vấn trở lại tốt ... nhưng tôi cần điều kiện nơi để ở đó.

Tôi cũng đã kiểm tra giá trị số của trường price và tất cả đều tốt.

Sau khi chơi xung quanh, điều này thực sự làm cho nó hoạt động, và tôi không thể giải thích lý do tại sao.

with AL as (
    select 
    L.price::int as price, 
    from listings L 
    where L.price <> 'NULL' 
    and L.listing_type <> 'NULL' 
    limit 10000000000 
) 
select price from AL 
where price < 800 

Lưu ý rằng bảng có ít hồ sơ hơn số được nêu trong giới hạn.

Bất kỳ ai (có thể từ nhóm kỹ sư Redshift) giải thích tại sao đây là cách thức của nó? Có thể một cái gì đó để làm với cách kế hoạch truy vấn được thực hiện và song song?

+0

sẽ là tuyệt vời để xem câu trả lời cho điều này! – ingrid

Trả lời

0

Tôi đã truy vấn có thể được thể hiện đơn giản là:

SELECT TOP 10 field1, field2 
FROM table1 
INNER JOIN table2 
ON table1.field3::int = table2.field3 
ORDER BY table1.field1 DESC 

Loại bỏ các diễn viên rõ ràng để giải quyết ::int một lỗi tương tự đối với tôi.

Trong khi đó, postgresql cục bộ yêu cầu ":: int" hoạt động.

Đối với những gì nó có giá trị, phiên bản postgresql địa phương của tôi là PostgreSQL 9.6.4 on x86_64-apple-darwin16.7.0, compiled by Apple LLVM version 8.1.0 (clang-802.0.42), 64-bit

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