sql >> Databasteknik >  >> RDS >> Oracle

Mellanslag är inte tillåtet efter parameterprefixet ':'

Av min erfarenhet kommer jag att berätta. Det finns två scenarier
1) Du vill ange en parameter i frågan vars värde ställs in dynamiskt.

eg: where user_id = :userId

Här kommer du inte få några problem om du ställer in parameter med samma namn som "userId";
2) Du typcastar värdet

eg: select count(id) :: integer

när du gör detta måste du använda escape-tecken annars kommer hibernate att tro att det är en parameter. Och det kommer att ge ett felmeddelande "Alla parametrar är inte inställda" du kan övervinna detta genom att skriva kod med escape-tecken

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

Så detta kommer att lösa ditt problem. Och om du felaktigt används framåt snedstreck istället för bakåt snedstreck får du felet "mellanslag är inte tillåtet efter prefix"

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

Men jag rekommenderar starkt att du använder CAST-funktionen istället för att använda "::" denna operator select CAST(count(id) as integer) Det är det bättre sättet att typgjuta och det kommer att leda till minimala fel



  1. Hur ansluter man till MySQL med UTF8 i ett perl-skript?

  2. Mysql ordning efter specifika ID-värden

  3. Konvertera månadsnummer till månadsnamn i PostgreSQL

  4. Sammanfoga 2 tabeller i SELECT(MYSQL/PHP)