sql >> Databasteknik >  >> RDS >> Mysql

Hur skriver man en noll safe compare <=> i ren SQL?

De andra rankade och efterföljande svaren ger en metod att göra detta utan att binda sökvärdet två gånger:

SELECT * FROM ROUTERS 
WHERE coalesce(ROUTER_ADDRESS, '') = coalesce( ?, '');

Observera att detta kräver ett dummyvärde som aldrig kan vara ett giltigt kolumnvärde (det är "utanför bandet"); Jag använder den tomma strängen. Om du inte har något sådant värde måste du stå ut med att binda värdet två gånger:

SELECT * FROM ROUTERS 
WHERE ROUTER_ADDRESS = ? or (ROUTER_ADDRESS is null and ? is null);


  1. Skillnaden mellan LockModeType Jpa

  2. Använda endast tangentbordsnavigering i Word, Excel och PowerPoint (Del 3:Uppgiftsrutor)

  3. Hur man förhindrar anslutningstidsgränser för stora MySQL-importer

  4. mysql konverterar flera rader till kolumner i en enda rad