Chúng tôi có một SQL thực hiện chức năng CAST (tới FLOAT) trên ColumnA. SQL có một bộ lọc mà cuối cùng sẽ gián tiếp lọc ra những hàng có giá trị không số trong ColumnA. Tuy nhiên, vì những gì tôi tin là do chạy các phần của SQL song song, tôi tin rằng CAST thậm chí được áp dụng cho các hàng được lọc ra và điều này làm cho SQL thất bại về "không thể truyền giá trị như float ... "không thể truyền giá trị dưới dạng float
tôi biết rằng nếu tôi chạy với một proc bằng cách thêm các gợi ý truy vấn
OPTION (MAXDOP 1)
rằng SQL chạy như mong đợi. Tôi nghi ngờ rằng chạy trên 1 proc buộc các bộ lọc được áp dụng để loại bỏ hàng với các giá trị số không trong cộtA để các giá trị của nó thành công. Tôi cũng thấy rằng việc sử dụng các gợi ý truy vấn
OPTION (FORCE ORDER)
sửa chữa vấn đề này, tôi giả định becausethis quá đảm bảo rằng các bộ lọc được áp dụng đầu tiên và tôi có được hiệu suất truy vấn tốt hơn nhiều mà một chạy trên một xi lanh.
Tôi nghiêng nghiêng về phía sau để khắc phục sự cố bằng tùy chọn thứ 2. Nếu tôi có bất kỳ quan niệm sai lầm về những gì đang xảy ra ở đây hoặc nếu ai đó muốn giải thích về hiểu chung của tôi hoặc đưa ra một đề nghị, tôi sẽ đánh giá cao nó.
Tôi đang chạy trên
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1720.0 (X64) ngày 12 Tháng 6 năm 2010 01:34:59 Bản quyền (c) Tập đoàn Microsoft Enterprise Edition (64 bit) trên Windows NT 5.2 (Build 3790: Service Pack 2)
một suy nghĩ:
có vẻ như rằng nó sẽ được tốt đẹp là T-SQL có các chức năng sau để kiểm tra xem một chuỗi có thể beve rted đến một datatype cụ thể.
IsFloat IsNumeric IsInteger vv
Tôi thực sự cảm thấy khó chịu ở bao nhiêu cột của tất cả các loại dữ liệu mà tôi tìm thấy trong cơ sở dữ liệu của chúng tôi được xác định là varchar (255). Tôi đoán giải pháp là "không làm điều đó!"
Bạn có thể hiển thị SQL không? – MatBailie
Bạn đang yêu cầu chúng tôi giúp sửa xe của bạn mà không thực sự nhìn thấy chiếc xe. Cho chúng tôi xem xe. – JNK
T-SQL có IsNumeric – MatBailie