Trong Mysql có toán tử so sánh là an toàn không: < =>. Tôi sử dụng điều này trong chương trình Java của tôi khi tạo các câu lệnh đã chuẩn bị như sau:Làm thế nào để viết một an toàn null so sánh "<=>" trong SQL thuần túy?
String routerAddress = getSomeValue();
String sql = "SELECT * FROM ROUTERS WHERE ROUTER_ADDRESS <=> ? ";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, routerAddress);
Bây giờ tôi muốn chuyển sang cơ sở dữ liệu H2. Làm cách nào để viết toán tử < => trong SQL thuần túy (sử dụng ví dụ IS NULL và IS NOT NULL)? Tôi chỉ muốn sử dụng thao tác stmt.setString chỉ sau khi. Bạn có thể viết tên cột nhiều lần.
Câu hỏi liên quan là Get null == null in SQL. Nhưng câu trả lời đó đòi hỏi giá trị tìm kiếm phải được viết 2 lần (nghĩa là: 2 dấu chấm hỏi trong PreparedStatement của tôi) !?
tham khảo: http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_equal-to
Không chắc chắn rằng tôi hoàn toàn hiểu những gì bạn muốn làm. Bạn có muốn tuyên bố có thể trả lại các hàng khi bạn khớp ROUTER_ADDRESS trên tham số không null mà bạn chuyển vào và trả về các hàng có ROUTER_ADDRESS là null khi bạn chuyển vào null không? –
Vâng, đó chính xác là nó! GetSomeValue() của tôi có thể trả về cả giá trị null và không null. Khi nó trả về null, tôi muốn tất cả các hàng mà ROUTER_ADDRESS là null. –
Trong SQL thuần túy (= tiêu chuẩn) sẽ là 'a khác biệt với b' –