sql >> Databáze >  >> RDS >> Oracle

Za předponou parametru ':' není povolena mezera

Z mé zkušenosti vám to řeknu. Existují dva scénáře
1) Chcete v dotazu zadat parametr, jehož hodnota se nastavuje dynamicky.

eg: where user_id = :userId

Zde nebudete mít žádný problém, pokud nastavujete parametr se stejným názvem jako "userId";
2) Přetypujete hodnotu

eg: select count(id) :: integer

když to děláte, musíte použít znak escape, jinak si hibernace bude myslet, že jde o parametr. A zobrazí chybu „Všechny parametry nejsou nastaveny “ můžete to překonat psaním kódu pomocí znaku escape

eg:select count(id) \\:\\: integer

Takže to vyřeší váš problém. A pokud jste nesprávně použili lomítko místo zpětného lomítka, zobrazí se chyba "mezera není povolena za předponou"

Wrong: select count(id)//://: integer
Right: select count(id)\\:\\: integer

Ale důrazně vám doporučuji použít funkci CAST místo použití "::" tento operátor select CAST(count(id) as integer) Je to lepší způsob přetypování a povede k minimálním chybám



  1. Zkontrolujte, zda tabulka na serveru SQL existuje

  2. Postgre SQL ignoruje podmínku filtrování, pokud je hodnota null

  3. 2ndQuadrant na PostgresConf USA 2018

  4. smyčka mysql_fetch_array while. Jak to funguje?