2012-04-27 44 views
6

Tại sao một diễn viên lồng nhau KHÔNG hoạt động trong MySQL? (Nó không sử dụng SQL Server)CAST lồng nhau không hoạt động

select cast(cast(myColumn as decimal(5,2)) as int) from myTable 

SQLFiddle Example

+0

Bạn đang cố gắng làm gì? Mục đích của việc đúc là "UNSIGNED', chỉ sau đó để giải thích dữ liệu kết quả là một ký hiệu' INT'? Điều này sẽ không có tác dụng tương tự như trực tiếp thực hiện 'CAST (myColumn AS INT)'? – eggyal

+0

@eggyal: Tôi đã thay đổi ví dụ của mình.Câu hỏi đặt ra là cố gắng tìm số nguyên trong trường varchar và bỏ qua các số thập phân như: 'select * từ tab nơi cast (cast (myColumn dưới dạng thập phân (5,2)) dưới dạng int) = cast (myColumn dưới dạng thập phân) 5,2)) ' –

+0

Để thực hiện điều đó, có thể bạn sẽ thấy dễ dàng hơn khi kiểm tra các cột của mình dựa vào [biểu thức chính quy] (http://dev.mysql.com/doc/refman/5.1/en/regexp.html) . Xem [câu hỏi này] (http://stackoverflow.com/questions/75704/how-do-i-check-to-see-if-a-value-is-an-integer-in-mysql) để biết thêm thông tin. – eggyal

Trả lời

3

Theo the manual:

CAST(expr AS type) [...]

CONVERT(expr,type) [...]

Các type thể là một trong các giá trị sau:

  • BINARY[(N)]

  • CHAR[(N)]

  • DATE

  • DATETIME

  • DECIMAL[(M[,D])]

  • SIGNED [INTEGER]

  • TIME

  • UNSIGNED [INTEGER]

Vì vậy, chỉ cần làm theo hướng dẫn:

SELECT CAST(CAST(myColumn AS DECIMAL(5,2)) AS SIGNED) FROM myTable 

hoặc

SELECT CAST(CAST(myColumn AS DECIMAL(5,2)) AS UNSIGNED) FROM myTable 
0

Truy vấn này đang làm việc trên các khái niệm về dàn diễn viên lồng nhau.

truyền (tổng (đúc (cột) int + cast (Column_name as int)) dưới dạng bigint) dưới dạng thanh toán từ tên_bảng

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