En Mysql hay un operador de comparación que es una caja fuerte nula: < =>. Yo uso este en mi programa Java al crear declaraciones preparadas de esta manera:Cómo escribir una caja fuerte nula compare "<=>" en SQL puro?
String routerAddress = getSomeValue();
String sql = "SELECT * FROM ROUTERS WHERE ROUTER_ADDRESS <=> ? ";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, routerAddress);
Ahora me gustaría cambiar a la base de datos de H2. ¿Cómo escribo el operador < => en SQL puro (utilizando, por ejemplo, IS NULL y IS NOT NULL)? Me gustaría utilizar la operación stmt.setString solo una vez. Está bien escribir el nombre de la columna varias veces.
La pregunta relacionada es Get null == null in SQL. Pero esa respuesta requiere que el valor de búsqueda se escriba 2 veces (es decir: 2 signos de interrogación en mi PreparedStatement) !?
Referencia: http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_equal-to
No estoy seguro de que entiendo completamente lo que quiere hacer. ¿Desea que la declaración pueda devolver filas cuando coincide con ROUTER_ADDRESS en el parámetro no nulo que pasa, y para devolver las filas donde ROUTER_ADDRESS es nulo cuando pasa nulo? –
Sí, eso es exactamente! My getSomeValue() puede devolver valores nulos y no nulos. Cuando devuelve nulo, quiero todas las filas donde ROUTER_ADDRESS es nulo. –
En SQL puro (= estándar) que sería 'a es distinto de b' –