I'm trying to rename a database to a name with a hyphen (-).
ALTER DATABASE one RENAME TO one-two;
And psql returns an error:
ERROR: syntax error at or near "-"
What should I use as an escape sequence for "-" character or what's the way to do the above?
Note: I've tried the '\-' and didn't work as well.
Thanks.
In MySQL, use the back-ticks. In standard SQL, use double-quotes. No, the hyphen is an operator, and you can't use that in the middle of an identifier.
Special character symbols are characters with a pre-defined syntactic meaning in PostgreSQL. They are typically disallowed from being used in identifier names for this reason, though as mentioned in the section on quoted identifiers, this restriction can usually be worked around with quotes if need be.
Since these expressions are used on character or string fields, we must put the expression inside single quotes. The beginning of the expression is marked with a “^” operator and the end is marked with a “$” dollar sign. These two characters help us understand the start and the end of the expression.
Double quotes should do it. But you'll have to always use the quoted-identifier everywhere you reference the database.
ALTER DATABASE one RENAME TO "one-two";
Mix double quotes and single quotes as such:
psql --command='create database "db-name-with-dashes"'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With