sql >> Database >  >> RDS >> Oracle

Er is geen spatie toegestaan ​​na het parametervoorvoegsel ':'

Vanuit mijn ervaring zal ik het je vertellen. Er zijn twee scenario's
1) U wilt een parameter specificeren in de query waarvan de waarde dynamisch wordt ingesteld.

eg: where user_id = :userId

Hier krijg je geen probleem als je een parameter instelt met dezelfde naam als "userId";
2) Je typt de waarde

eg: select count(id) :: integer

wanneer u dit doet, moet u het escape-teken gebruiken, anders denkt de hibernate dat het een parameter is. En het geeft een foutmelding "Alle parameters zijn niet ingesteld " je kunt dit oplossen door code te schrijven met een escape-teken

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

Dit lost dus je probleem op. En als je een slash voorwaarts gebruikt in plaats van een slash achterwaarts, krijg je de foutmelding "spatie is niet toegestaan ​​na prefix"

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

Maar ik raad je ten zeerste aan om de CAST-functie te gebruiken in plaats van "::" deze operator select CAST(count(id) as integer) Het is de betere manier om te typen en het zal tot minimale fouten leiden



  1. Element invoegen in leerstellige luisteraar

  2. SQL LIMIT syntaxisfout

  3. Maak datum van dag-, maand-, jaarvelden in MySQL

  4. Openshift MYSQL-omgevingsvariabelen niet ingesteld